背景:
有些时候我们有多个服务器AB,它们都在阿里云同一个内网中,我们需要只把A服务对外开放,但是有业务在B中,并不对外访问,只让A用制定端口从内网访问,所以需要做个配置,支持A从内网访问B服务。需要注意的是,在服务器所在的服务商控制台确认你的端口没有对外开放。
思路:
先在B服务器Nginx中增加配置server模块,监听一个端口,其它配置跟原来的配置一样,再在内网ping自己(IP+端口,如:tcping 127.0.0.1 8080),然后在外网A服务器ping B( IP+端口,如:tcping 41.98.166.111 8080)。
Nginx配置(B):
# only game server in
server {
# 这里删除了https 443监听,并监听新的端口
listen 8080;
root /home/html/zc_game_admin/public;
# 这里删除了域名(别名)配置
index index.php index.html;
client_max_body_size 10M;
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
}
location ~ \.php(.*)$ { # 正则匹配.php后的pathinfo部分
root /home/html/zc_game_admin/public;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $DOCUMENT_ROOT$fastcgi_script_name;
fastcgi_param PATH_INFO $1; # 把pathinfo部分赋给PATH_INFO变量
include fastcgi_params;
}
重启Nginx:
#检测配置
nginx -t
# 平滑加载
nginx -s reload
查看端口是否被监听:
netstat -anop | grep 8080
是否安装ping工具:
which tcping
安装tcping:
yum install tcping -y
执行ping:
tcping 41.98.166.111 8080
注意:外网ping的时候一直没返回结果表示ping不通,否则会返回连通信息
END