Back

nginx - 使用rewrite 来实现 无法备案域名的跳转

发布时间: 2017-08-03 06:22:00

注意: 以下内容的前提是:

1. 国内的可以备案的域名(sweetysoft.com ) 是正常工作的。

2. siwei.tech 这个域名对应的服务器位于国外(例如中国香港地区或者日本)

我们对于无法备案的域名, (例如:  siwei.tech ) 可以有两个策略: 

1. 在nginx上做代理  ( proxy )  ,  
   1.1  让用户的请求,先打到国外的服务器(域名A记录指向国外服务器IP),
   1.2  国外的服务器上, nginx做了相关的代理 proxy ...  ,请求打回国内的服务器 
   

这样的好处,是用户端的网址还是 siwei.tech  

代码例子:
server {
  listen       80;
  # 这个域名无法在国内备案。 
  server_name  www.siwei.tech;
  charset utf-8;
  client_max_body_size 10m;

  location / { 
    # 这个是国内可以备案的域名
    proxy_pass          http://www.sweetysoft.com;    
    # 下面的几行可有可无。
    proxy_redirect      default;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header    X-Real-IP $remote_addr;
    proxy_set_header    Host $http_host;
    proxy_next_upstream http_502 http_504 error timeout invalid_header;
  }
}

2. 在nginx上做 转发 (rewrite ) 
   2.1 让用户的请求,先打到国外的服务器(域名A记录指向国外服务器IP),
   2.2 国外的服务器上, nginx做了相关的转发设置,请求被直接转发到国内的备案域名上,( 例如 sweetysoft.com ) 

server {
  listen       80; 
  server_name  www.siwei.tech siwei.tech;
  charset utf-8;
  client_max_body_size 10m;

  rewrite /.* http://sweetysoft.com$uri permanent;
}

Back