Nginx多层代理配置

此篇只说nginx的多级代理配置,不扯其他的.


需求:hba.changyoufun.com-121.201.125.239(gd1)--hk1--co(alphaclash.ggdev.co)  广东代理--->香港--->加拿大

由于idc机房在加拿大,所以经常会配些nginx多级反向代理到国内.(不做代理client就得***,或者说是丢包很严重.)


下面的Nginx配置我只写80的,443的忽略,简化nginx的配置,参数也不一一列举不然太多了.

gd1的反向代理配置:(就是一个反向代理)

cat hba.changyoufun.com.conf
server{
  listen 121.201.125.239:80;
  
  server_name hba.changyoufun.com;
  access_log  /data/weblogs/hba.changyoufun.com.access.log main;
  index index.html  index.php index.htm;
  location / {
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $host;
                proxy_redirect off;
                proxy_read_timeout 600;
                proxy_connect_timeout 600;
                proxy_pass http://hba80;
         }
}
Upstream配置(代理的是hk1的内网ip):
 upstream hba80 {
       server 10.105.3.222:80;         
    }
    upstream hba443 {
       server 10.105.3.222:443;           
    }


hk1的反向代理配置:(也是一个nginx反向代理)

cat hba.changyoufun.com.conf
server{
  listen 10.105.3.222:80;
  
  server_name hba.changyoufun.com;
  access_log  /data/weblogs/hba.changyoufun.com.access.log main;
  index index.html  index.php index.htm;
  location / {
                proxy_set_header X-Forwarded-For $remote_addr;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $host;
                proxy_redirect off;
                proxy_read_timeout 600;
                proxy_connect_timeout 600;
                proxy_pass http://hba80;
         }
}
Upstream配置(代理的是alphaclash.ggdev.co域名的ip地址):
upstream hba80 {
       server 216.66.17.34:80;           
    }
    upstream hba443 {
       server 216.66.17.34:443;          
    }

co机房原先已经存在alphaclash.ggdev.co域名的配置,只需要copy一份alphaclash.ggdev.co的nginx配置,将域名替换为hba.changyoufun.com即可.

co的两份nginx配置:

nginx和php的web版:

cat hba.changyoufun.com.conf
server{
      listen 216.66.17.34:80; 
    server_name hba.changyoufun.com ;
    access_log  /data/weblogs/hba.changyoufun.com.access.log main;
    index  index.html index.php index.htm;
root /product/clash/alpha/web/htdocs;
location ~ ^/.*(do|php)$ {
        fastcgi_pass php_proxy;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }
}


cat alphaclash.ggdev.co.conf
server{
      listen 216.66.17.34:80; 
    server_name alphaclash.ggdev.co;
    access_log  /data/weblogs/alphaclash.ggdev.co.access.log main;
    index  index.html index.php index.htm;
root /product/clash/alpha/web/htdocs;
location ~ ^/.*(do|php)$ {
        fastcgi_pass php_proxy;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }
}


注释:其实nginx的代理很简单,很多时候是没想明白,既然代理alphaclash.ggdev.co,前面两级代理配置了这个域名不就ok了?仔细想发现nginx代理根据ip:端口找域名,然后在location匹配到的location段再找upstream段,再根据upstream段的ip+port找下级域名,最后发现最后一级没有相匹配的域名就报404了,所以最后一层也要配上相匹配的域名配置.


nginx配置多层跨域的方法如下: 1. 首先,在nginx配置文件中找到你的vue项目所在的location块。这个块通常会包含类似以下的配置: ``` location / { # 配置vue项目的根目录 root /path/to/your/vue/project; try_files $uri $uri/ /index.html; } ``` 2. 在这个location块内部,添加以下配置来实现跨域: ``` location /api/ { # 配置api请求的代理地址 proxy_pass http://api.example.com/; } location /backend/ { # 配置后端请求的代理地址 proxy_pass http://backend.example.com/; } ``` 其中,`/api/`对应你的接口请求路径,`http://api.example.com/`是你的实际接口地址。同样地,`/backend/`是你后端请求的路径,`http://backend.example.com/`是你的后端实际地址。 3. 保存配置文件并重新加载nginx。 这样配置之后,当你的vue项目发起`/api/`开头的请求时,nginx会将请求代理到`http://api.example.com/`,实现跨域请求。同理,`/backend/`开头的请求也会被代理到后端服务器。 请注意,以上是一个简单的示例,你需要根据你的实际情况修改配置。另外,为了确保安全性,你可能还需要配置一些额外的安全措施,比如重写HTTP头信息或启用CORS。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [nginx 上部署vue,同时转发多台服务器,实现负载均衡](https://blog.youkuaiyun.com/hyp187/article/details/107512590)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [Vue中跨域及打包部署到nginx跨域设置方法](https://download.youkuaiyun.com/download/weixin_38557896/12937934)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值