bre*_*rja 5 https nginx django-admin gunicorn
我在Centos 6机器上部署了一个Nginx/Gunicorn/Django服务器,只有外部世界可见的SSL端口(443).因此,除非使用该服务器调用服务器,否则https://您将不会得到任何响应.如果你用它来调用它http://domain:443,你只需要获得400 Bad Request消息.端口443是命中服务器的唯一方法.
我正在使用Nginx来提供我的静态文件(CSS等),所有其他请求都由Gunicorn处理,它正在运行Django http://localhost:8000.因此,导航到https://domain.com工作正常,管理站点内的链接,但当我在Django管理员中提交表单时,https在重定向上丢失,我被发送到http://domain.com/request_uri无法到达服务器.即使如此,POST操作也能正常工作,并且数据库已更新.
我的配置文件如下所示.位置location /部分是我觉得应该找到解决方案的地方.但似乎proxy_set_header X-*指令没有任何效果.我错过了一个模块或什么?我正在运行nginx/1.0.15.
我在互联网上找到的所有东西都指向X-Forwarded-Protocol https应该做的事情,但我没有改变.我也无法在远程服务器上进行调试,但我的下一步可能必须在本地编译并启用调试以获得更多线索.最后一种方法是暴露端口80并重定向所有内容......但这需要一些文书工作.
[http://pastebin.com/Rcg3p6vQ](我的nginx配置参数)
server {
listen 443 ssl;
ssl on;
ssl_certificate /path/to/cert.crt;
ssl_certificate_key /path/to/key.key;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
server_name example.com;
root /home/gunicorn/project/app;
access_log /home/gunicorn/logs/access.log;
error_log /home/gunicorn/logs/error.log debug;
location /static/ {
autoindex on;
root /home/gunicorn;
}
location / {
proxy_pass http://localhost:8000/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Protocol https;
}
}
Run Code Online (Sandbox Code Playgroud)
还没有时间准确理解这两行的作用,但删除它们解决了我的问题:
proxy_redirect off;
proxy_set_header Host $host;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
846 次 |
| 最近记录: |