当同一服务器上部署了多个不同的web应用时,可以使用Nginx进行管理配置。
举个例子:假如 www.aabbccdd.com 站点有好几个web App(web应用):
finance(金融)、product(产品)、admin(用户中心)。
访问这些应用的方式通过上下文(context)来进行区分:
www.aabbccdd.com/finance/
www.aabbccdd.com/product/
www.aabbccdd.com/admin/
我们知道,http的默认端口号是80,如果在一台服务器上同时启动这3个 webapp
应用,都用80端口,肯定是不成的。所以,这三个应用需要分别绑定不同的端口号,假设绑定的端口为18080、28080、38080。
那么,问题来了,用户在实际访问 www.helloworld.com 站点时,访问不同 web app,总不会还带着对应的端口号去访问吧
。所以,为了解决这一问题,需要再次用到反向代理来做处理。
Nginx具体配置如下:
#运行用户 #user somebody; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志
error_log C:/Users/wangcw/Desktop/nginx-1.13.12/logs/error.log; error_log
C:/Users/wangcw/Desktop/nginx-1.13.12/logs/notice.log notice; error_log
C:/Users/wangcw/Desktop/nginx-1.13.12/logs/info.log info;
#PID文件,记录当前启动的nginx的进程ID pid
C:/Users/wangcw/Desktop/nginx-1.13.12/logs/nginx.pid; #工作模式及连接数上限 events {
worker_connections 1024; #单个后台worker process进程的最大并发链接数 } http {
#设定mime类型,类型由mime.type文件定义 include
C:/Users/wangcw/Desktop/nginx-1.13.12/conf/mime.types; default_type
application/octet-stream; #设定日志 log_format main '[$remote_addr] -
[$remote_user] [$time_local] "$request" ' '$status $body_bytes_sent
"$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log
C:/Users/wangcw/Desktop/nginx-1.13.12/logs/access.log main; rewrite_log on;
#设置访问的web应用列表 upstream product_server{ server www.aabbccdd.com:18080; }
upstream admin_server{ server www.aabbccdd.com:28080; } upstream
finance_server{ server www.aabbccdd.com:38080; } #HTTP服务器 server {
#监听80端口,80端口是知名端口号,用于HTTP协议 listen 80; #定义使用www.xx.com访问 server_name
www.aabbccdd.com; #首页 index index.jsp #指向webapp的目录 root
C:/XMCARES_X/WorkSpace/nginx/src/main/webapp; #编码格式 charset utf-8; #代理配置参数
proxy_connect_timeout 180; proxy_send_timeout 180; proxy_read_timeout 180;
proxy_set_header Host $host; proxy_set_header X-Forwarder-For $remote_addr;
#默认指向product的server location / { proxy_pass http://product_server; }
#使用location对不同请求做相应处理 location /product/{ proxy_pass http://product_server; }
location /admin/ { proxy_pass http://admin_server; } location /finance/ {
proxy_pass http://finance_server; } } }
现在对如上配置进行测试:
1、先启动3个不同的web app,并测试访问。
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
2.在 C:\Windows\System32\drivers\etc 目录下的hosts文件中添加一条 DNS 记录、
再根据配置文件启动Nginx:
hosts文件:
127.0.0.1 www.aabbccdd.com
启动Nginx:
nginx.exe -c conf/nginx_3.conf
3、使用定义的域名进行访问各个应用(不需要带端口了)
--------------------------------------------------------------------------
--------------------------------------------------------------------------
热门工具 换一换