配置多台服务器
修改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、使用定义的域名进行访问各个应用(不需要带端口了)