Nginx 配置多台服务器及反向代理

配置多台服务器

修改nginx.conf文件,在http下添加

upstream site {
    server 127.0.0.1:9999;
    server 127.0.0.1:8888;
    server 127.0.0.1:7779;
    server 127.0.0.1:7777;
}

然后在 localhost 中 proxy_pass 后添加 

http://site;

  具体配置如下

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    upstream site {
        server 127.0.0.1:9999;
        server 127.0.0.1:8888;
        server 127.0.0.1:7779;
        server 127.0.0.1:7777;
    } 

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html;
            proxy_pass http://site;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

}

反向代理

当同一服务器上部署了多个不同的web应用时,可以使用Nginx进行管理配置。

们知道,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      对应域名

    启动Nginx:

nginx.exe -c conf/nginx_3.conf

3、使用定义的域名进行访问各个应用(不需要带端口了)

猜你喜欢

转载自www.cnblogs.com/slei212/p/10620323.html