使用 proxy_pass 在 nginx 上配置 SSL

使用 proxy_pass 在 nginx 上配置 SSL

我在使基于 python/gunicorn 的站点的 SSL 工作在端口 80 上运行良好时遇到了问题。我正在使用它proxy_pass来将流量发送到上游。

迄今已完成的步骤

  1. 来自 Incommon 的通配符证书包适用于其他 Apache 站点, 已复制到包含 nginx 的计算机中/etc/ssl。该包中的三个文件是domain.crt、、domain.keyincommon.crt
  2. 创建了一个名为domain.chain.crt使用cat domain.crt incommon.crt > domain.chain.crt
  3. 在所有 4 个文件上设置775权限和与我的配置相同的所有权。sites-available
  4. 在以下配置下创建sites-available

    server { 
       listen 80;
       server_name <subdom.domainname.com>;
       location / {
          include proxy_params;
          proxy_pass https://unix:/var/www/developmentfolder/sandbox.sock;
          proxy_ssl_certificate /etc/ssl/domain.chain.crt;
          proxy_ssl_certificate_key /etc/ssl/domain.key;
       }
    }
    

问题

我现在无法通过 80 或 443 访问该网站。Nginx 的错误日志没有显示任何内容,日志文件也没有显示任何内容gunicorn。Nginx 的语法检查每次都通过。我在这里做错了什么吗?

Nginx 版本是 1.10.3

答案1

你的做法是错误的。你说你想让 https 工作,但你却将端口 80 配置为通过 https 协议使用本地套接字。我甚至不确定这是否可以做到,但它会通过基于文件的 unix 域套接字加密 nginx 和 gunicorn 之间的连接。它对浏览器和你的网络服务器之间的连接没有任何作用。

如果你只想让你的网站通过 https 访问,那么为什么不遵循官方指南一旦它发挥作用,就可以做更复杂的事情。

如果你已经成功了,并且你真的想加密 web 服务器和 gunicorn 之间的连接,那么我不会使用 unix 域套接字,而是使用SSL 配置和 HTTPS 连接。

相关内容