我正在将 Django 与 Nginx 和 Gunicorn 一起使用。
当我输入https://域名[dot]com下面的浏览器中是我收到的消息。
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8001/
有人可以解释一下为什么请求 URL 与浏览器中输入的 URL 不同吗(https://域名[dot]com)。 我将衷心感谢您的帮助。
以下是我的域名的“Nginx”服务器配置。
server {
listen 80;
server_name DomainName[dot]com;
access_log off;
# root /opt/myenv/projects/myproject;
location /static/ {
alias /opt/myenv/static/;
}
location / {
proxy_pass http://127.0.0.1:8001;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
}
}
下面是我的 Gunicorn 配置
command = '/opt/myenv/bin/gunicorn'
pythonpath = '/opt/myenv/projects/myproject'
bind = '127.0.0.1:8001'
workers = 3
user = 'nobody'
编辑:
以下是我尝试过的一些配置:
将我的 Gunicorn 配置中的 proxy_pass (在我的服务器块内)和 bind 设置设置为'http://mydomain[点]com'当我访问该网址时,我得到了
500内部服务器错误
当我检查 Nginx 的错误日志时,我得到以下信息:
[警报] 16730#0:*766 768 连接到上游时 worker_connections 不足,客户端:192.241.xxx.xxx,服务器:mydomain.com,请求:“GET / HTTP/1.0”,上游:“http://192.241.xxx.xxx:80/", 主机: "mydomain[dot]com"
[错误] 16870#0:*7 open()“/opt/myenv/static/assets/jqm/js_css/images/ajax-loader.gif”失败(2:没有此文件或目录),客户端:183.82.xxx.xx,服务器:mydomain.com,请求:“GET /static/assets/jqm/js_css/images/ajax-loader.gif HTTP/1.1”,主机:“www.mydomain[dot]com”,引荐来源:“http://www.mydomain[dot]com/home/“
将我的 Gunicorn 配置中的 proxy_pass (在我的服务器块内)和 bind 设置设置为'http://我的域名[点]com:8001'当我访问该网址时,我得到了
Page not found (404) Request Method: GET Request URL: http://mydomain[dot]com:8001/
我想要实现的是将我的请求网址设置为'http://我的域名.com' 这样,当我为 Facebook 身份验证启用 OAuth2 时,请求 URL 与 Facebook 中应用程序的域设置一致。
注意:为了表示“。”我使用了 [点],因为服务器故障不允许声誉低于 10 的用户发布超过 2 个链接。
答案1
Django 认为它正在运行,127.0.0.1:8001
因为这是正在运行127.0.0.1:8001
。事实上,你有一个 nginx 实例将请求转发给它,但这并不会改变这一点。
您是否考虑过让 Gunicorn 监听 UNIX 套接字,然后让 nginx 将请求转发到该套接字?这应该可以解决问题,因为 Gunicorn 根本不会监听 TCP 套接字。
这可以通过修改 Nginx 和 Gunicorn 配置来实现,如下所示
Nginx 配置:
upstream app_server {
server unix:/path/gunicorn.sock fail_timeout=0;
}
server {
listen 80;
server_name DomainName[dot]com;
access_log off;
location /static/ {
alias /opt/myenv/static/;
}
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://app_server;
break;
}
}
}
将 Gunicorn 配置替换bind
为如下所示的内容:
bind = 'unix:/path/gunicorn.sock'