编程技术分享平台

网站首页 > 技术教程 正文

nginx正向代理配置(nginx的正向代理和反向代理)

xnh888 2024-10-17 17:35:17 技术教程 18 ℃ 0 评论

什么是正向代理

正向代理是一个位于客户端和真实服务器之间的服务器,为了从真实服务器取得内容,客户端向代理服务器发送一个请求并指定真实服务器地址,然后代理向真实服务器转发请求并将获得的内容返回给客户端。

配置nginx正向代理http请求

如果只代理http请求,可以像下面这样配置:

http{
    server {
       listen 8080;
       resolver 8.8.8.8;
       location / {
           proxy_pass http://$host;
           proxy_set_header Host $host;
       }
   }
}

resolver是必须配置的,用来解析真实服务器的地址,它可以解析ipv4与ipv6地址,如果只想解析ipv4地址可以这样配置resolver:

resolver 8.8.8.8 ipv6=off;

配置nginx正向代理https请求

nginx默认是不支持正向代理https请求的,如果要让它代理https请求,则需要安装支持proxy_connect指令的扩展。

扩展的安装有两种方式,一种是编译进nginx程序本身,另一种是动态加载。第一种需要编译时确定,第二种可以后期动态加载进来。

加载动态扩展时nginx默认会检测兼容性,如果不兼容则不会加载,所以我们编译动态扩展时需要加兼容选项,比如下面配置:

./configure --with-compat --add-dynamic-module=/path/to/module

由于我们这里安装扩展时对代码进行了打补丁操作,即使用动态加载的方式也需要用编译后的nginx程序,所以我们用编译进nginx程序本身的方式添加扩展。

添加扩展方式可以参考官网地址:https://github.com/chobits/ngx_http_proxy_connect_module

最后的配置如下:

http{
    server {
       listen 8080;
       resolver 8.8.8.8 ipv6=off;
       proxy_connect;
       proxy_connect_allow all;
       proxy_connect_connect_timeout 30s;
       proxy_connect_read_timeout 30s;
       proxy_connect_send_timeout 30s;
       location / {
           proxy_pass http://$host;
           proxy_set_header Host $host;
       }
   }
}

如果想对CONNECT请求使用https,可以这样配置:

http{
    server {
       listen 8080 ssl;
       resolver 8.8.8.8 ipv6=off;
       ssl_certificate /etc/pki/nginx/server.crt;
       ssl_certificate_key /etc/pki/nginx/server.key;
       ssl_session_cache shared:SSL:1m;
       proxy_connect;
       proxy_connect_allow all;
       proxy_connect_connect_timeout 30s;
       proxy_connect_read_timeout 30s;
       proxy_connect_send_timeout 30s;
       location / {
           proxy_pass http://$host;
           proxy_set_header Host $host;
       }
   }
}

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表