我尝试用Nginx部署django项目,用this tutorial部署Gunicorn项目。我做了所有的待办事项,但是,当我用以下代码创建/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我该如何解决这个问题?
发布于 2017-03-04 09:35:19
你有99%的时间弄错了proxy_params的路径(根据我的经验),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;这些参数用于将信息转发到您要代理的应用程序。我曾经使用过一个没有proxy_params文件的旧CentOS服务器,我没有自己创建一个文件,而是直接包含了这些参数;位置块看起来像这样:
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中(如果您想继续使用当前代码)。
发布于 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_params与danidee使用的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中创建两个文件。
发布于 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成功了!
https://stackoverflow.com/questions/42589781
复制相似问题