當后端web服務器存在多個虛擬主機時,該模塊是用來區分前端請求,是給反向代理的后端的哪個虛擬主機 1 在服務器192.168.132.131 前端服務器如下配置: upstream backend { server 192.168.132.129 max_fails=3 fail_timeout=30s; server 192.168.132.130 max_fails=3 fail_timeout=30s; } server { listen 80; server_name www.etiantian.org; index index.php index.html index.htm; location / { proxy_pass http://backend; } } server { listen 80; server_name bbs.etiantian.org; root html/bbs; index index.html index.htm; location / { proxy_pass http://backend; } } } [root@moban conf]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.132.131 www.etiantian.org bbs.etiantian.org blog.etiantian.org status.etiantian.org [root@moban conf]# [root@moban conf]# for n in `seq 100`; do curl bbs.etiantian.org;sleep 2; done bbs.etiantian.org www.etiantian.org bbs.etiantian.org www.etiantian.org bbs.etiantian.org www.etiantian.org bbs.etiantian.org 從這可以看出你訪問到后端時,服務器並不知到你想訪問后端的哪個虛擬主機,所以他就將第一個虛擬主機返回給你,顯然這是不正確的!!!! 那么解決這個方法的途徑就是在 location 標簽中加上 proxy_set_header Host $host; 后端服務器就知道你想訪問的是哪個虛擬主機了。 server { listen 80; server_name bbs.etiantian.org; root html/bbs; index index.html index.htm; location / { proxy_pass http://backend; proxy_set_header Host $host; } } } [root@moban conf]# for n in `seq 100`; do curl bbs.etiantian.org;sleep 2; done http://bbs.etinatian.org bbs.etiantian.org http://bbs.etinatian.org bbs.etiantian.org http://bbs.etinatian.org bbs.etiantian.org http://bbs.etinatian.org bbs.etiantian.org 2 在后端服務器192.168.132.129 這樣配置: [root@moban conf]# cat nginx.conf worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name www.etiantian.org; root html/www; index index.php index.html index.htm; } server { listen 80; server_name bbs.etiantian.org; root html/bbs; index index.html index.htm; } } [root@moban conf]# curl www.etiantian.org www.etiantian.org [root@moban conf]# curl bbs.etiantian.org http://bbs.etinatian.org [root@moban conf]# 3 在另一后端服務器192.168.132.130如下配置: [root@moban conf]# cat nginx.conf worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name bbs.etiantian.org; root html/bbs; index index.html index.htm; } server { listen 80; server_name www.etiantian.org; root html/www; index index.php index.html index.htm; } } [root@moban conf]# curl bbs.etiantian.org bbs.etiantian.org [root@moban conf]# curl www.etiantian.org http://www.etiantian.org [root@moban conf]#