Windows下Nginx报include指令错误、mime.types路径找不到 咨询配置路径写法
Windows环境Nginx配置路径报错修复方案
报错原因
两个报错均由路径书写不符合Windows下Nginx的解析规则导致:
nginx: [emerg] invalid number of arguments in "include" directive:配置中直接使用Windows原生反斜杠\作为路径分隔符,反斜杠在Nginx配置中是转义字符,且你的用户目录名Shi Jie包含空格、未加引号包裹,Nginx解析路径时会将空格后的内容识别为额外参数,触发参数数量错误。nginx: [emerg] CreateFile() ...... failed:一是转义后的路径无法被正确识别,二是你直接照搬了Mac教程里的Linux系统路径(/var/log/nginx、/var/run/nginx.pid、/etc/nginx/conf.d/*.conf),这些路径在Windows系统中不存在,Nginx自然无法找到对应文件。
Windows下Nginx路径正确书写规则
- 统一使用正斜杠
/作为路径分隔符,不要使用Windows原生的反斜杠\,Nginx在Windows环境下可自动识别正斜杠路径。 - 如果路径中包含空格,必须用英文双引号将完整路径包裹。
- 优先使用相对路径:所有路径相对于
nginx.conf所在的conf目录书写,不需要写全盘符开头的绝对路径,出错概率更低。 - 不要直接套用Mac/Linux教程里的系统级路径,日志、pid、自定义配置文件都可以放在Nginx自身的解压目录下,避免权限和路径不存在问题。
修正后的可用配置
你当前Nginx解压目录为C:\Users\Shi Jie\Downloads\nginx-1.23.0\nginx-1.23.0,mime.types文件和nginx.conf同属conf目录,直接用相对路径书写即可,修正后配置如下:
worker_processes 1; error_log logs/error.log warn; pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main; sendfile on; #tcp_nopush on; client_body_buffer_size 100k; client_header_buffer_size 1k; client_max_body_size 100k; large_client_header_buffers 2 1k; client_body_timeout 10; client_header_timeout 10; keepalive_timeout 5 5; send_timeout 10; server_tokens off; #gzip on; include conf.d/*.conf; }
配置修改完成后,先在
nginx.exe所在的根目录执行nginx -t校验配置合法性,返回syntax is ok、test is successful提示后,再执行nginx -s reload重载配置即可正常运行。注意使用include conf.d/*.conf规则前,需要先在conf目录下新建名为conf.d的文件夹,否则会报找不到目录的错误。
内容的提问来源于stack exchange,提问作者Thomaswasalone
相关产品推荐
相关产品推荐

