首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django- nginx:[emerg] open() "/etc/nginx/proxy_params“在/etc/nginx/sites enabled/myproject中失败(2:没有这样的文件或目录):11

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

Stack Overflow用户
提问于 2017-03-04 06:50:45
回答 3查看 23.8K关注 0票数 33

我尝试用Nginx部署django项目,用this tutorial部署Gunicorn项目。我做了所有的待办事项,但是,当我用以下代码创建/etc/nginx/sites-available/myproject文件时:

代码语言:javascript
复制
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查找错误,我得到这个错误:

代码语言:javascript
复制
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

我该如何解决这个问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-04 09:35:19

你有99%的时间弄错了proxy_params的路径(根据我的经验),proxy_params文件的默认位置是/etc/nginx/proxy_params,但对你来说似乎不是一样的。

proxy_params文件包含以下内容:

代码语言:javascript
复制
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_params文件的旧CentOS服务器,我没有自己创建一个文件,而是直接包含了这些参数;位置块看起来像这样:

代码语言:javascript
复制
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

否则,您可以将参数直接包含在location块中(就像我上面所做的那样)

或者自己创建一个,并将其放在/etc/nginx中(如果您想继续使用当前代码)。

票数 49
EN

Stack Overflow用户

发布于 2021-04-12 09:56:12

在ubuntu上安装nginx时,通常会出现proxy_params,路径为/etc/nginx/proxy_params。但是你的ubuntu没有,所以正如danidee回答的那样,制作proxy_params或者添加proxy_params拥有的代码是很好的解决方案。

这一次,我制作了docker容器,其中包含nginx和alpine,它是linux发行版之一。但它的proxy_paramsdanidee使用的old CentOS不同。所以我添加了proxy_params的代码,这是比制作proxy_params更简单的方法。

似乎一些linux发行版或一些旧的linux发行版可能没有proxy_params

另外,我以前也见过你用过the tutorial。对于nginx配置,你最好在/etc/nginx/conf.d/myproject.conf上只做一个myproject.conf (不要忘记在myproject之后使用.conf。nginx找不到没有.conf的文件)。在这种情况下,您不需要在/etc/nginx/sites-available/myproject/etc/nginx/sites-enabled/myproject中创建两个文件。

票数 1
EN

Stack Overflow用户

发布于 2021-05-17 00:19:49

在我的示例中,在/etc/nginx/sites-enabled目录中有一个名为myproject的文件。但是在/etc/nginx/sites-available目录中没有名为myproject的文件。实际上,我并不需要这个myproject文件,因为我不是故意创建它的。

所以我只是使用sudo rm myproject/etc/nginx/sites-enabled目录中删除了myproject文件,瞧!现在sudo nginx -t成功了!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42589781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档