翼度科技»论坛 云主机 服务器技术 查看内容

nginx正向代理的配置和使用教程

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
nginx正向代理http,nginx正向代理https

  • 正向代理,指的是通过代理服务器 代理浏览器/客户端去重定向请求访问到目标服务器 的一种代理服务。正向代理服务的特点是代理服务器 代理的对象是浏览器/客户端,也就是对于目标服务器 来说浏览器/客户端是隐藏的。
  • nginx默认支持正向代理http,不支持https
  • nginx官方并不支持直接转发https请求,nginx支持https需要ngx_http_proxy_connect_module模块。github上开源了模块 https://github.com/chobits/ngx_http_proxy_connect_module。不过维护的ngx_http_proxy_connect_module模块的补丁也是有nginx版本限制的,需根据自身使用的nginx版本选择相应的正向代理模块。可以在REDEME.md的Select patch中查看nginx版本和模块的对应关系

安装包准备


下载nginx安装包

下载地址


下载正向代理模块的包

下载地址


版本与模块对照表



部署nginx服务

此处使用的是nginx-1.20.2,对应proxy_connect_rewrite_1018.patch

上传nginx包和正向模块包
  1. mkdir /nginx
  2. cd /nginx
  3. [root@mysql nginx]# ll
  4. -rw-r--r-- 1 root root 1062124 Feb 12 15:23 nginx-1.20.2.tar.gz
  5. -rw-r--r-- 1 root root   57926 Feb 12 15:23 ngx_http_proxy_connect_module-master.zip
复制代码
解压,改名
  1. tar -xf nginx.tar.gz
  2. unzip ngx_http_proxy_connect_module-master.zip
  3. ll
  4. drwxr-xr-x 9 1001 1001    4096 Feb 12 15:27 nginx-1.20.2
  5. -rw-r--r-- 1 root root 1062124 Feb 12 15:23 nginx-1.20.2.tar.gz
  6. drwxr-xr-x 5 root root    4096 Feb  9 16:54 ngx_http_proxy_connect_module-master
  7. -rw-r--r-- 1 root root   57926 Feb 12 15:23 ngx_http_proxy_connect_module-master.zip
  8. mv ngx_http_proxy_connect_module-master ngx_http_proxy_connect_module
  9. ll
  10. drwxr-xr-x 9 1001 1001    4096 Feb 12 15:27 nginx-1.20.2
  11. -rw-r--r-- 1 root root 1062124 Feb 12 15:23 nginx-1.20.2.tar.gz
  12. drwxr-xr-x 5 root root    4096 Feb  9 16:54 ngx_http_proxy_connect_module
  13. -rw-r--r-- 1 root root   57926 Feb 12 15:23 ngx_http_proxy_connect_module-master.zip
复制代码
安装nginx
  1. yum -y install make gcc openssl openssl-devel pcre-devel zlib zlib-devel
  2. cd nginx-1.20.2
  3. ll
  4. drwxr-xr-x 6 1001 1001   4096 Feb 12 15:20 auto
  5. -rw-r--r-- 1 1001 1001 312251 Nov 16  2021 CHANGES
  6. -rw-r--r-- 1 1001 1001 476577 Nov 16  2021 CHANGES.ru
  7. drwxr-xr-x 2 1001 1001   4096 Feb 12 15:20 conf
  8. -rwxr-xr-x 1 1001 1001   2590 Nov 16  2021 configure
  9. drwxr-xr-x 4 1001 1001   4096 Feb 12 15:20 contrib
  10. drwxr-xr-x 2 1001 1001   4096 Feb 12 15:20 html
  11. -rw-r--r-- 1 1001 1001   1397 Nov 16  2021 LICENSE
  12. drwxr-xr-x 2 1001 1001   4096 Feb 12 15:20 man
  13. -rw-r--r-- 1 1001 1001     49 Nov 16  2021 README
  14. drwxr-xr-x 9 1001 1001   4096 Feb 12 15:20 src
  15. # 查看正向代理模块proxy_connect_rewrite_1018.patch的位置
  16. ll ../ngx_http_proxy_connect_module/patch/
  17. -rw-r--r-- 1 root root 9849 Feb  9 16:54 proxy_connect_1014.patch
  18. -rw-r--r-- 1 root root 9697 Feb  9 16:54 proxy_connect.patch
  19. -rw-r--r-- 1 root root 9408 Feb  9 16:54 proxy_connect_rewrite_1014.patch
  20. -rw-r--r-- 1 root root 9505 Feb  9 16:54 proxy_connect_rewrite_101504.patch
  21. -rw-r--r-- 1 root root 9496 Feb  9 16:54 proxy_connect_rewrite_1015.patch
  22. -rw-r--r-- 1 root root 9553 Feb  9 16:54 proxy_connect_rewrite_1018.patch
  23. -rw-r--r-- 1 root root 9306 Feb  9 16:54 proxy_connect_rewrite_102101.patch
  24. -rw-r--r-- 1 root root 9337 Feb  9 16:54 proxy_connect_rewrite.patch
  25. # 导入模块 后面为模块路径
  26. patch -p1 < /nginx/ngx_http_proxy_connect_module/patch/proxy_connect_rewrite_1018.patch
  27. # 编译
  28. ./configure --add-module=/nginx/ngx_http_proxy_connect_module
  29. # 安装,默认安装在/usr/local/nginx/
  30. make && make install
  31. # 查看nginx
  32. ll /usr/local/nginx/
  33. drwx------ 2 nobody root 4096 Feb 12 15:47 client_body_temp
  34. drwxr-xr-x 2 root   root 4096 Feb 12 15:46 conf
  35. drwx------ 2 nobody root 4096 Feb 12 15:47 fastcgi_temp
  36. drwxr-xr-x 2 root   root 4096 Feb 12 15:28 html
  37. drwxr-xr-x 2 root   root 4096 Feb 12 15:47 logs
  38. drwx------ 2 nobody root 4096 Feb 12 15:47 proxy_temp
  39. drwxr-xr-x 2 root   root 4096 Feb 12 15:33 sbin
  40. drwx------ 2 nobody root 4096 Feb 12 15:47 scgi_temp
  41. drwx------ 2 nobody root 4096 Feb 12 15:47 uwsgi_temp
复制代码
配置正向代理
  1. cd /usr/local/nginx/
  2. #gzip  on;下添加
  3. vim conf/nginx.conf
  4.     #gzip  on;
  5.     #正向代理转发http请求
  6.     server {
  7.     #指定DNS服务器IP地址
  8.         resolver 114.114.114.114;
  9.     #监听80端口,http默认端口80
  10.         listen 80;
  11.     #服务器IP或域名
  12.             server_name  localhost;
  13.     #正向代理转发http请求
  14.     location / {
  15.         proxy_pass                 http://$host$request_uri;
  16.         proxy_set_header           HOST $host;
  17.         proxy_buffers              256 4k;
  18.         proxy_max_temp_file_size   0k;
  19.         proxy_connect_timeout      30;
  20.         proxy_send_timeout         60;
  21.         proxy_read_timeout         60;
  22.         proxy_next_upstream error  timeout invalid_header http_502;
  23.     }
  24.     }
  25.     #正向代理转发https请求
  26.     server {
  27.         #指定DNS服务器IP地址
  28.             resolver 114.114.114.114;
  29.         #监听443端口,https默认端口443
  30.         listen 443;
  31.         #正向代理转发https请求
  32.         proxy_connect;
  33.         proxy_connect_allow            443 563;
  34.         proxy_connect_connect_timeout  10s;
  35.         proxy_connect_read_timeout     10s;
  36.         proxy_connect_send_timeout     10s;
  37.      location / {
  38.              proxy_pass http://$host;
  39.              proxy_set_header Host $host;
  40.    }
  41.    }
复制代码
创建nginx用户

nginx服务以用户nginx身份启动
  1. useradd nginx
复制代码
检查nginx配置并启动
  1. sbin/nginx -t
  2. sbin/nginx
复制代码
  1. ss -utnlp | grep nginx
  2. tcp    LISTEN     0      511       *:443                   *:*                   users:(("nginx",pid=6645,fd=7),("nginx",pid=6644,fd=7))
  3. tcp    LISTEN     0      511       *:80                    *:*                   users:(("nginx",pid=6645,fd=6),("nginx",pid=6644,fd=6))
复制代码
nginx服务所在服务器验证正向代理功能
  1. curl -I http://www.baidu.com/ -v -x 127.0.0.1:80
  2. curl -I https://www.baidu.com/ -v -x 127.0.0.1:443
复制代码
  1. curl -I http://www.baidu.com/ -v -x 127.0.0.1:80
  2. * About to connect() to proxy 127.0.0.1 port 80 (#0)
  3. *   Trying 127.0.0.1...
  4. * Connected to 127.0.0.1 (127.0.0.1) port 80 (#0)
  5. > HEAD http://www.baidu.com/ HTTP/1.1
  6. > User-Agent: curl/7.29.0
  7. > Host: www.baidu.com
  8. > Accept: */*
  9. > Proxy-Connection: Keep-Alive
  10. >
  11. < HTTP/1.1 200 OK
  12. HTTP/1.1 200 OK
  13. < Server: nginx/1.20.2
  14. Server: nginx/1.20.2
  15. < Date: Sun, 12 Feb 2023 09:03:40 GMT
  16. Date: Sun, 12 Feb 2023 09:03:40 GMT
  17. < Content-Type: text/html
  18. Content-Type: text/html
  19. < Content-Length: 277
  20. Content-Length: 277
  21. < Connection: keep-alive
  22. Connection: keep-alive
  23. < Accept-Ranges: bytes
  24. Accept-Ranges: bytes
  25. < Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
  26. Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
  27. < Etag: "575e1f60-115"
  28. Etag: "575e1f60-115"
  29. < Last-Modified: Mon, 13 Jun 2016 02:50:08 GMT
  30. Last-Modified: Mon, 13 Jun 2016 02:50:08 GMT
  31. < Pragma: no-cache
  32. Pragma: no-cache
  33. <
  34. * Connection #0 to host 127.0.0.1 left intact
复制代码
  1. curl -I https://www.baidu.com/ -v -x 127.0.0.1:443
  2. * About to connect() to proxy 127.0.0.1 port 443 (#0)
  3. *   Trying 127.0.0.1...
  4. * Connected to 127.0.0.1 (127.0.0.1) port 443 (#0)
  5. * Establish HTTP proxy tunnel to www.baidu.com:443
  6. > CONNECT www.baidu.com:443 HTTP/1.1
  7. > Host: www.baidu.com:443
  8. > User-Agent: curl/7.29.0
  9. > Proxy-Connection: Keep-Alive
  10. >
  11. < HTTP/1.1 200 Connection Established
  12. HTTP/1.1 200 Connection Established
  13. < Proxy-agent: nginx
  14. Proxy-agent: nginx
  15. <
  16. * Proxy replied OK to CONNECT request
  17. * Initializing NSS with certpath: sql:/etc/pki/nssdb
  18. *   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  19.   CApath: none
  20. * SSL connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  21. * Server certificate:
  22. *       subject: CN=baidu.com,O="Beijing Baidu Netcom Science Technology Co., Ltd",OU=service operation department,L=beijing,ST=beijing,C=CN
  23. *       start date: Jul 05 05:16:02 2022 GMT
  24. *       expire date: Aug 06 05:16:01 2023 GMT
  25. *       common name: baidu.com
  26. *       issuer: CN=GlobalSign RSA OV SSL CA 2018,O=GlobalSign nv-sa,C=BE
  27. > HEAD / HTTP/1.1
  28. > User-Agent: curl/7.29.0
  29. > Host: www.baidu.com
  30. > Accept: */*
  31. >
  32. < HTTP/1.1 200 OK
  33. HTTP/1.1 200 OK
  34. < Accept-Ranges: bytes
  35. Accept-Ranges: bytes
  36. < Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
  37. Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
  38. < Connection: keep-alive
  39. Connection: keep-alive
  40. < Content-Length: 277
  41. Content-Length: 277
  42. < Content-Type: text/html
  43. Content-Type: text/html
  44. < Date: Sun, 12 Feb 2023 09:03:40 GMT
  45. Date: Sun, 12 Feb 2023 09:03:40 GMT
  46. < Etag: "575e1f60-115"
  47. Etag: "575e1f60-115"
  48. < Last-Modified: Mon, 13 Jun 2016 02:50:08 GMT
  49. Last-Modified: Mon, 13 Jun 2016 02:50:08 GMT
  50. < Pragma: no-cache
  51. Pragma: no-cache
  52. < Server: bfe/1.0.8.18
  53. Server: bfe/1.0.8.18
  54. <
  55. * Connection #0 to host 127.0.0.1 left intact
复制代码
配置不能访问外网的服务器(即内网服务器),使其可以访问外网


liunx服务器配置

1.只配置使用yum时,能够使用正向代理访问外网
  1. #追加配置
  2. vim /etc/yum.conf
  3. proxy=http://192.168.0.20:80                #nginx正向代理服务器的地址
  4. proxy=ftp://192.168.0.20:80                        #nginx正向代理服务器的地址
复制代码
2.只配置使用wget时,能够使用正向代理访问外网
  1. #追加配置
  2. vim /etc/wgetrc
  3. http_proxy=192.168.0.20:80     #nginx正向代理服务器的地址
  4. http_proxy=192.168.0.20:443    #nginx正向代理服务器的地址
复制代码
3.全局配置,所以访问请求都能够使用正向代理访问外网
  1. #追加配置
  2. vim /etc/profile
  3. http_proxy=192.168.0.20:80
  4. https_proxy=192.168.0.20:443
  5. ftp_proxy=192.168.0.20:443
  6. export http_proxy
  7. export https_proxy
  8. export ftp_proxy
  9. # 加载配置
  10. source /etc/profile
复制代码
windows服务器配置



验证不能访问外网的服务器(即内网服务器),使用代理上网
  1. curl -I http://www.baidu.com
  2. curl -I https://www.baidu.com
复制代码
  1. curl -I http://www.baidu.com
  2. HTTP/1.1 200 OK
  3. Server: nginx/1.20.2
  4. Date: Sun, 12 Feb 2023 09:31:03 GMT
  5. Content-Type: text/html
  6. Content-Length: 277
  7. Connection: keep-alive
  8. Accept-Ranges: bytes
  9. Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
  10. Etag: "575e1f60-115"
  11. Last-Modified: Mon, 13 Jun 2016 02:50:08 GMT
  12. Pragma: no-cache
复制代码
  1. curl -I https://www.baidu.com
  2. HTTP/1.1 200 Connection Established
  3. Proxy-agent: nginx
  4. HTTP/1.1 200 OK
  5. Accept-Ranges: bytes
  6. Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
  7. Connection: keep-alive
  8. Content-Length: 277
  9. Content-Type: text/html
  10. Date: Sun, 12 Feb 2023 09:31:07 GMT
  11. Etag: "575e1f60-115"
  12. Last-Modified: Mon, 13 Jun 2016 02:50:08 GMT
  13. Pragma: no-cache
  14. Server: bfe/1.0.8.18
复制代码
到此这篇关于nginx正向代理的配置和使用教程的文章就介绍到这了,更多相关nginx正向代理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:https://www.jb51.net/server/291575lmy.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具