nginx 如何实现HTTPS代理?[关闭]

mm5n2pyu  于 2023-03-22  发布在  Nginx
关注(0)|答案(1)|浏览(152)

**已关闭。**此问题为not about programming or software development。当前不接受答案。

此问题似乎与a specific programming problem, a software algorithm, or software tools primarily used by programmers无关。如果您认为此问题与another Stack Exchange site的主题有关,您可以留下评论,说明在何处可以回答此问题。
4小时前关门了。
Improve this question
我想做一个可以在HTTPS上工作的代理。有一个HTTP服务器,用户可以下载一些文件。地址可以是“https://repo.example.com:8084/product/test.tar.gz”或“http://repo.example.com:8080/product/test.tar.gz”。
我的目标是使代理,当用户输入“https://file.repository.com/test.tar.gz,文件将被下载从“https://repo.example.com:8084/product/test.tar.gz”或“http://repo.example.com:8080/product/test.tar.gz”。
我的工作环境就像下面一样。
有一个HTTP服务器,Nginx,PC(Linux)的客户端。
在客户端PC上,/etc/environment位于下面

http_proxy=http://172.21.1.95:80/
https_proxy=http://172.21.1.95:443/

Nginx在www.example.com上运行172.21.1.95,Nginx配置如下。

http {
    server {
            listen       *:80;
            server_name  file.repository.com;
            proxy_connect;
            proxy_connect_allow            443 563;
            proxy_connect_connect_timeout  10s; 
            
            location / {
                    # Use IPv4 upstream address instead of DNS name to avoid attempts by nginx to use IPv6 DNS lookup
                    proxy_pass http://repo.example.com:8084/product/;
                    proxy_set_header Host $host;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                }  
    }
    server {
            listen   443 ssl;

            server_name  file.repository.com;

            ssl_certificate /etc/nginx/example.cert;
            ssl_certificate_key /etc/nginx/example.key;
            ssl_session_cache              shared:SSL:1m;

            proxy_connect;
            proxy_connect_allow            443 563;
            proxy_connect_connect_timeout  10s;
        
        
            location / {
                    proxy_pass http://repo.example.com:8084/product/;
                    
                    proxy_set_header Host              $host;
                    proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
                    proxy_set_header X-Real-IP         $remote_addr;            
                    proxy_set_header X-Forwarded-Proto "https";
                }  
    }
}

Web服务器在www.example.com上运行repo.example.com,并具有http(8080)和https(8084)
现在HTTP运行得很好,但HTTPS不行。
当用户输入“wget http://file.repository.com/test.tar.gz"”时,文件从http://repo.example.com:8080/product/test.tar.gz下载,但当用户输入“wget https://file.repository.com/test.tar.gz"”时,他收到消息“Connecting to 172.21.1.95:443... connected. Proxy tunneling failed:错误请求无法建立SSL连接。"。
我不明白这个问题。请帮助我,我们的团队不要解雇我。

at0kjp5o

at0kjp5o1#

您的代理需要身份验证。您需要使用wget的--proxy-user和--proxy-password参数来提供身份验证凭据。
您也可以尝试此链接https://www.cyberciti.biz/faq/wget-example-download-from-https-web-sites/
如果错误仍然存在,请检查代理服务器和端口

相关问题