原文地址:http://www.javashuo.com/article/p-mhrcjebb-ha.htmljavascript
2.1 内网服务惟一端口外网映射
(一) 组网图
(二) 简要说明:
如标题所示,该功能能够实现内网环境下全部服务端口经过nginx的正向代理经过惟一端口映射至外网环境;且当本地服务设置特定域名后,外网可直接使用内网服务自定义的域名加映射端口进行访问。css
以下图:html
实现功能:外网访问各个服务自定义的域名+统一的映射端口进行访问。java
可解决问题:nginx
(一) 映射端口量实现无限量json
有效解决内网路由端口数量不足的状况,因为常规的路由器对外可支持的映射端口为20个,当需求量超出时,只有手动更换对应的映射端口;可是有了nginx,咱们只须要在配置文件中加入须要映射的服务信息便可实现对外映射的须要,且路由无需作任何改变。windows
(二) 安全系数增长浏览器
a) 因为内网映射的服务自定义了访问域名,在不知道相应服务域名的前提了,公共环境是没法访问对应的内网服务的。tomcat
b) 因为公网中对外仅提供了惟一的映射端口,即便访问者知道你的公网IP及端口,因为nignx能够自定义设置默认访问页面,对于访问者来讲,内网的全部服务均处于相对安全状态下。安全
(三) nginx配置:
#user nobody;
worker_processes 1; #开启niginx工做进程,通常几个CUP核心写几个
error_log /usr/local/nginx/logs/error.log; #启动日志存放路径设置
events {
worker_connections 1024; #一个进程能同时处理1024个请求
}
http {
#开启gzip压缩
gzip on;
#设置容许压缩的页面最小字节(从header头的Content-Length中获取) 建议大于1k
gzip_min_length 1k;
#以16k为单位,按照原始数据大小以16k为单位的4倍申请内存
gzip_buffers 4 16k;
#识别http协议的版本,早起浏览器可能不支持gzip自解压,用户会看到乱码
gzip_http_version 1.1;
#等级1-9 最小的压缩最快 可是消耗cpu
gzip_comp_level 4;
#匹配压缩类型
gzip_types text/plain text/css test/javascript application/json application/javascript application/x-javascript application/xml;
#设置须要压缩的数据格式
gzip_vary on; #启用应答头"Vary: Accept-Encoding"
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 访问日志配置
access_log /usr/local/nginx/access.log;
upstream mytomcat123{
server 192.168.1.119:15588;
}
upstream isatomcat{
server 192.168.1.119:15587;
}
upstream isatomcat60{
server 192.168.1.60:15587;
}
#设定虚拟主机配置1
server {
listen 88;
server_name mytomcat123;
#同一端口外网映射后,使用不一样ip访问不一样的内网服务
charset utf-8;
access_log logs/host.access.log;
error_log logs/host.error.log;
location / {
proxy_pass http://mytomcat123;
root html;
index index.html index.htm;
}
}
#设定虚拟主机配置2
server {
listen 88;
server_name isatomcat;
#同一端口外网映射后,使用不一样ip访问不一样的内网服务
charset utf-8;
access_log logs/host.access.log;
error_log logs/host.error.log;
location / {
proxy_pass http://isatomcat;
root html;
index index.html index.htm;
}
}
#设定虚拟主机配置3
server {
listen 88;
server_name isatomcat60;
#同一端口外网映射后,使用不一样ip访问不一样的内网服务
charset utf-8;
access_log logs/host.access.log;
error_log logs/host.error.log;
location / {
proxy_pass http://isatomcat60;
root html;
index index.html index.htm;
}
}
}
测试配置文件备份:
注意红色标记,这里配置了3个内网服务,
192.168.1.60:15587(服务别名为: tomcat60)
192.168.1.119:15587(服务别名为:tomcat)
192.168.1.119:15588(服务别名为:mytomcat123)
同时监听的端口是88,我这里将其映射至外网,外网访问端口为10388
(四) 本地配置域名解析便于外网访问
目的:快速定位解析访问域名
注意:因为目前公司内部使用的是免费的域名解析工具,会出现域名解析异常致使的访问失败的状况(老问题),在不影响工做的状况建议直接使用外网IP的方法来规避此类问题。
a) Windows配置访问验证
访问C:\Windows\System32\drivers\etc 下打开hosts文件 加入
relaxsystem027.gnway.cc isatomcat isatomcat60 mytomcat123
Windows下尝试访问:
以下图所示
咱们能够看到3台服务已经可使用外网映射的公共端口经过自定义的域名进行访问了。莫名的感受到很强,有没有。
注意:使用公网域名加映射端口访问时,默认跳转到的是nginx配置的第一个虚拟服务路径;这里就实现了访问安全策略。
b) Linux配置访问验证
访问编辑/etc/hosts
Linux下访问
考虑到访问客户端应用场景应该都是使用windows上,这里不作相关验证
此处略