Nginx 作为 Web 代理在 https 上失败

Nginx 作为 Web 代理在 https 上失败

我一直在尝试将 nginx 配置为充当 Web 代理(如鱿鱼),以便能够修改标头。它正在使用 http,但 https 显示“未找到服务器”。另外,我可以直接通过url访问,它会下载https资源,如果我重新加载,则无法加载https资源......我做错了什么?

这是我的 nginx.conf:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
types_hash_max_size 4096;
include       mime.types;
default_type  application/octet-stream;

sendfile        on;
keepalive_timeout  65;

gzip  on;

upstream @squid {
    server 127.0.0.1:3128;
}

server {
    listen 3120 ;

    ssl_certificate           /etc/nginx/certs/cert.crt;
    ssl_certificate_key       /etc/nginx/certs/cert.key;

    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    location / {
    resolver 8.8.8.8 192.168.1.254;
    #proxy_bind 127.0.0.1:3128;
    proxy_http_version 1.1;
    proxy_pass $scheme://$host$request_uri;

        #proxy_set_header Host $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_set_header Request-URI $request_uri;

        proxy_redirect off;
            #proxy_pass http://$host$request_uri;
    }
}
}

答案1

您尚未在nginx server {}块中启用 SSL。

需要更改的行:

listen 3120 ;

应该是:

listen 3120 ssl;

这将为该nginx server {}块启用 SSL,但如果您还没有注意到,HTTP(非 SSL)将停止在端口 3120 上工作。

您可以server {}使用以下命令将该块设置为同时侦听 HTTP 和 HTTPS:

listen 3120 ;
listen 3121 ssl;

但正如您所注意到的,它需要不同的端口。

相关内容