我目前正在使用以下(简化的)配置来代理同一端口上的 http 和 https 连接(aws elastic beanstalk 需要):
server {
listen 777 ssl;
server_name foo.com;
ssl_certificate /etc/nginx/ssl/foo.crt;
ssl_certificate_key /etc/nginx/ssl/foo;
root /usr/share/nginx/www;
index index.html index.htm;
error_page 418 = @upstream;
error_page 497 = @upstream;
location / {
return 418;
}
location @upstream {
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}
}
Run Code Online (Sandbox Code Playgroud)
我想将上游更改为 uwsgi 并让 uwsgi 处理 ssl,因为它会简化部署。
如何在 Nginx 不解密 ssl 流量的情况下调整我的配置以适用于 SNI HTTPS 和 HTTP?
不,Nginx 做不到。默认情况下,Nginx 始终解密内容,因此 Nginx 可以应用请求路由。一些可以尝试的解决方案:
有名为nginx_tcp_proxy_module的第 3 方模块。我还没试过。由于该模块在网络层进行代理,因此它会在不解密的情况下传递请求。
首选解决方案是使用 HAProxy。本教程建议您可以使用 SNI 功能进行 TCP 代理。
默认情况下,Nginx 始终充当代理上的 SSL 卸载/解密进程。这里有一些进行 SSL 卸载的优点(摘自此处)
归档时间: |
|
查看次数: |
4873 次 |
最近记录: |