django- nginx: \[emerg\] open() "/etc/nginx/proxy_params" 在 /etc/nginx/sites-enabled/myproject:11 中失败(2:没有这样的文件或目录)

新手上路,请多包涵

我尝试使用 本教程 使用 Nginx 和 Gunicorn 部署一个 django 项目。我做了所有待办事项,但是,当我创建 /etc/nginx/sites-available/myproject 文件时,代码如下:

 server {
listen 80;
server_name server_domain_or_IP;

location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
    root /home/sammy/myproject;
}

location / {
    include proxy_params;
    proxy_pass http://unix:/home/sammy/myproject/myproject.sock;
 }
}

然后运行 sudo nginx -t 查找错误,我得到这个错误:

 nginx: [emerg] open() "/etc/nginx/proxy_params" failed (2: No such file or directory) in /etc/nginx/sites-enabled/myproject:11
nginx: configuration file /etc/nginx/nginx.conf test failed

我该如何解决这个问题?

原文由 msln 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

proxy_params 99% 的时间(根据我的经验),— 文件的默认位置是 proxy_params 文件的默认位置是 /etc/nginx/proxy_params 对你来说似乎是一样的。

proxy_params 文件包含以下内容:

 proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

这些参数用于将信息转发到您要代理的应用程序。我曾使用过旧的 CentOS 服务器,它没有 proxy_params 文件,我没有自己创建一个文件,而是直接包含了这些参数;位置块看起来像这样:

 location / {
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_pass http://unix:/home/sammy/myproject/myproject.sock;
 }

所以这取决于你。如果该文件存在于另一个位置,只需将其包含在正确的位置:

include /path/to/proxy_params

否则你可以直接在位置块中包含参数(就像我上面做的那样)

或者自己创建一个并将其放在 /etc/nginx (如果你想坚持使用当前代码)

原文由 danidee 发布,翻译遵循 CC BY-SA 4.0 许可协议

就我而言,我在目录 /etc/nginx/sites-enabled --- 中有一个名为 myproject 的文件。但是我在目录 /etc/nginx/sites-available --- 中没有名为 myproject 的文件。而且我实际上不需要那个 myproject 文件,因为我不是故意创建的。

所以我刚刚从 /etc/nginx/sites-enabled 目录中删除了 myproject 文件 sudo rm myproject 瞧!现在 sudo nginx -t 成功了!

原文由 amp1590 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题