利用nginx反向代理让无法备案的域名使用国内服务器

需要准备的

可备案且已备案域名一个,我用了个.com域名

无法备案域名一个,就是现在这个tom.cat

国内云服务器,我用的阿里云

国外云服务器,我用的搬瓦工,最便宜的那个

nginx的nginx.conf配置文件加上如下配置信息

server {
listen 80;
server_name tom.cat;
location / {
proxy_redirect off;
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_pass http://www.xxx.com:8888/;
}
}

server_name 是需要绑定的域名,并且域名A记录指向国外服务器IP

proxy_pass 这个是国内访问的地址,域名A记录需要指向国内云服务器,端口号可以带,也可以不带,这里需要分情况讨论

如果不配置 proxy_set_header Host $host; 就可以在 proxy_pass 中使用80端口,如果配置了此参数,就需要使用非80端口,因为阿里云对解析至国内阿里云服务器的未备案域名根据请求头的 Host 进行拦截。

这里我选择了配置 proxy_set_header Host $host; 参数,并在国内服务器使用8888端口,因为我的另一项目需要检测来路域名,根据实际的来路域名显示不同的信息,也就是java中的request.getServerName()获取到浏览器是通过哪个域名进行访问的。如果不配置,在反向代理时候 Host 不会被转发,导致真实的来路域名丢失,进而 request.getServerName() 只会获取到 www.xxx.com 而不是真正的tom.cat

也许有人会问,既然国外都有服务器,直接把网站安装在国外不是更简单吗,这里我说明下,我买的是搬瓦工的linux主机,最便宜那款,一年才 $18.89 USD,我本身对linux就不怎么会,能把nginx装好就很不错了,再去学安装php和mysql估计得吐血,并且买的这款国外服务器配置很差劲,便宜没好货你懂得。

顺便说下我国内云服务器的配置,WIN2012 64位,4H8G5M

“利用nginx反向代理让无法备案的域名使用国内服务器”的2个回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注