近期租用服务器到期,本来租用的两台本地网服务器,变更为一台云服务器,涉及到网站的迁移问题。先来吐槽云服务器,网络高峰期,上传文件太慢了,1M的包传了30分钟都没搞定,不知道各位有没有遇到这样的问题。
不讲废话了,开始正题,公司本来有四个域名,对应到两台服务器上,现在集中布设到一台服务器上,按我的理解,直接在域名绑定中,将域名指定到服务器的某个端口上,当然这也是查看了相关文档才做出的结论,可能我对文档的理解有问题,文档万网云解析设置二级域名解析到同IP不同端口。把方案给领导后,领导说,你不是会用nginx吗,再去深入了解一下,域名只能指定到80端口,不可能按你的说的,每个网站指定到不同的端口上。
话说,我是程序员,不是运维,这个确实了解的不深。不过通过查阅文档终于搞出来:
其中涉及了了从A服务器跳转到B服务器,还有不同域名访问,指向不同的本地端口,前后端分离项目配置。
1,从A服务器跳转到B服务器配置:
A服务器配置:
server{
listen 80;
server_name www.aaa.cn aaa.cn;
location /{
proxy_redirect off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_pass_header User-Agent;
proxy_pass http://www.abc.cn:9000/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
B服务器配置:
server {
listen 9000;
server_name www.abc.cn abc.cn;
location / {
proxy_pass http://127.0.0.1:8888;
}
}
2、不同域名的80端口访问不同本地项目配置:
#域名1
server {
listen 80;
server_name www.abc.com abc.com;
index index.html index.htm index.php;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
#域名2
server {
listen 80;
server_name www.efg.cn efg.cn;
index index.html index.htm index.php;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_pass_header User-Agent;
proxy_pass http://127.0.0.1:9090;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
3、前后端分离项目
server {
#前端访问接口
listen 80;
server_name www.jdcrm.cn jdcrm.cn;
index index.html index.htm index.php;
# gzip config
gzip on;
gzip_min_length 1k;
gzip_comp_level 9;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";
root /usr/share/nginx/html;
location / {
# 用于配合 browserHistory使用
root html/dist;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
#公网页面访问的项目
location /api/{
proxy_redirect off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_pass_header User-Agent;
proxy_pass http://127.0.0.1:9090/;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#局域网内访问的项目
location /serverIp/{
proxy_redirect off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_pass_header User-Agent;
proxy_pass http://192.168.0.80:80/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
到此,域名均能正常访问,域名与服务器端口绑定工作完成,nginx减少了服务器对外暴露过多端口的问题,提高了服务器的安全性。