当“服务器上部署多个Web应用”,使用Nginx反向代理配置

当同一服务器上部署了多个不同的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、使用定义的域名进行访问各个应用(不需要带端口了大笑

--------------------------------------------------------------------------

--------------------------------------------------------------------------

 

   

 

 

 

©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页