Nginx反向代理

在实际运维中,可能有使用到大量的服务或者访问大量的域名,这些服务可能部署在不同的区域不同的设备上,实际网络质量或者访问的体验感受也可能不一样。

以思科WLC为例,在为中国屈臣氏做代维的时候,由于屈臣氏有多个IDC,门店使用的AP也都说注册到IDC的WLC上,北京的WLC跟佛山的WLC访问体验完全不一样,即便2个WLC的版本或者CPU、内存等都一样,访问也都是通过专线直连,但访问BJ的WLC实际体验就是慢,但通过BJ IDC的网络访问任意WLC速度又很快,在此基础上,就做了一个Nginx反向代理,通过某台机器来实现快捷访问的方式。

worker_processes auto;  # 自动根据CPU核心数调整

events {
    worker_connections 4096;  # 提高并发连接数
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile      on;
    keepalive_timeout 65;

    # 第一个server块:HTTP反向代理(监听7777端口)
    server {
        listen       7777;
        server_name  10.X.X.X;  ##实际访问的地址
        
        location / {
            proxy_pass http://1.1.1.2;  # 反向代理到后端服务的服务器
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            
            # 跨域配置(建议指定具体域名而非*)
            add_header 'Access-Control-Allow-Origin' 'https://example.com';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
        }
    }

    # 第二个server块:HTTP→HTTPS重定向(监听80端口)
    server {
        listen 80;
        server_name 10.X.X.X;
        return 301 https://$server_name$request_uri;
    }

    # 第三个server块:HTTPS反向代理(监听7777端口)
    server {
        listen 7777 ssl fastopen=3 reuseport;
        server_name 10.X.X.X;  # 
        
        add_header X-Content-Type-Options nosniff;
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
        
        # 填写实际证书路径
        ssl_certificate /path/to/cert.pem;
        ssl_certificate_key /path/to/key.pem;
        
        ssl_protocols TLSv1.2 TLSv1.3;  # 仅保留安全协议
        ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384';
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 60m;
        
        location / {
            proxy_pass https://1.1.1.2;  # 需要反向代理到HTTPS后端的IP
            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_ssl_verify off;
        }
    }
}

  1. 端口使用说明
    • 第一个 server 块监听 7777 端口(HTTP)
    • 第二个 server 块监听 80 端口(HTTP→HTTPS 重定向)
    • 第三个 server 块监听 7777 端口(HTTPS)
      这种配置允许通过以下两种方式访问:
    • http://10.X.X.X:7777 → 转发到http://1.1.1.2
    • https://10.X.X.X:7777 → 转发到https://1.1.1.2

验证配置的步骤:

  1. 修改配置文件后,先检查语法:nginx -t
  2. 如果语法正确,重载 Nginx:nginx -s reload
  3. 使用 curl 测试 HTTP 和 HTTPS 代理:
  4. 测试HTTP代理 curl -I http://10.X.X.X:7777
  5. 测试HTTPS代理(可能需要忽略证书验证) curl -Ik https://10.X.X.X:7777

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇