Nginx多域名负载均衡配置
Nginx负载均衡设置
环境:
负载均衡:192.168.188.128:80
Web1:192.168.188.128:81
Web2:192.168.188.129:80
正式环境中,需要解析域名www.doubles.cn、abc.dd.cn到负载均衡机器192.168.188.128,我们现在测试,就直接在本地windows下的hosts里面绑定域名:
192.168.188.128 www.doubles.cn
192.168.188.128 abc.dd.cn
1、单个域名的负载均衡
1.1、在web1(192.168.188.128)上搭好web环境:
01 02 03 04 05 | [root@localhost conf] # vim /usr/local/nginx/conf/nginx.conf ... include vhost/*.conf; ... } |
在http{}最下面添加include vhost/*.conf;每个域名对应一个conf文件。
新建vhost目录。
01 | [root@localhost conf] # mkdir /usr/local/nginx/conf/vhost/ |
新建www.doubles.cn.conf文件:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 | [root@localhost conf] # vim /usr/local/nginx/conf/vhost/www.doubles.cn.conf server { listen 81; server_name www.doubles.cn localhost 192.168.188.128; location / { root /usr/local/nginx/html/ ; index index.html index.php index.htm TempLoginPanel.html; } location ~ \.php$ { root /usr/local/nginx/html/ ; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } |
在/usr/local/nginx/html/里面写好html文件:
01 02 03 | [root@localhost conf] # vim /usr/local/nginx/html/index.html #测试内容自定义 …… |
重新加载nginx配置文件
01 02 03 04 | [root@localhost conf] # /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx .conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx .conf test is successful [root@localhost conf] # /usr/local/nginx/sbin/nginx -s reload |
测试web1:
1.2、在web2(192.168.188.129)上搭好web环境:
按照1.1的方法同样搭建web2的环境,
新建虚拟主机:
01 02 03 04 05 | [root@localhost conf] # vim /usr/local/nginx/conf/nginx.conf ... include vhost/*.conf; ... } |
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 | [root@localhost conf] # mkdir /usr/local/nginx/conf/vhost/ [root@localhost conf] # vim /usr/local/nginx/conf/vhost/www.doubles.cn.conf server { listen 80; server_name www.doubles.cn localhost 192.168.188.129; location / { root /usr/local/nginx/html/ ; index index.html index.php index.htm TempLoginPanel.html; } location ~ \.php$ { root /usr/local/nginx/html/ ; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } |
在/usr/local/nginx/html/里面写好html文件:
01 02 03 | [root@localhost conf] # vim /usr/local/nginx/html/index.html #测试内容自定义 …… |
重新加载nginx配置文件
01 02 03 04 | [root@localhost conf] # /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx .conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx .conf test is successful [root@localhost conf] # /usr/local/nginx/sbin/nginx -s reload |
测试如下:
注意:正式环境当中,web1和web2机器上面的网页内容应该是一致的,才能做负载均衡。这里为了区分两台机,所以在网页内容中区分了下。
1.3、在负载均衡机器(192.168.188.128)上:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 | [root@localhost conf] # vim /usr/local/nginx/conf/nginx.conf ...上面的省略... upstream doublesweb { #ip_hash; server 192.168.188.128:81; server 192.168.188.129:80; } server { listen 80; server_name localhost; location / { #root html; #index index.html index.htm; proxy_pass http: //doublesweb ; proxy_connect_timeout 2s; } ....略... |
(注意):这里upstream与proxy_pass的名字必须一致,这里都是doublesweb。
重新加载nginx配置文件
01 02 03 04 | [root@localhost conf] # /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx .conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx .conf test is successful [root@localhost conf] # /usr/local/nginx/sbin/nginx -s reload |
测试:
在windows上打开浏览器:输入网址www.doubles.cn,发现已经可以轮询web1和web2了
再刷新:
2、多个域名的负载均衡
在1中我们只对www.doubles.cn做了负载均衡,实际环境中我们可能需要对多个域名进行负载均衡。这里我们添加一个abc.dd.cn。
2.1、web1上面新建虚拟主机abc.dd.cn
增加网页目录/usr/local/nginx/html/dd/:
01 02 | [root@localhost html] # mkdir /usr/local/nginx/html/dd/ [root@localhost html] # vim /usr/local/nginx/html/dd/index.html |
添加一个abc.dd.cn.conf的虚拟主机:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 | [root@localhost html] # vim /usr/local/nginx/conf/vhost/abc.dd.cn.conf server { listen 81; server_name abc. dd .cn; location / { root /usr/local/nginx/html/dd/ ; index index.html index.php index.htm TempLoginPanel.html; } location ~ \.php$ { root /usr/local/nginx/html/dd/ ; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } |
重新加载nginx配置文件
01 02 03 04 | [root@localhost conf] # /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx .conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx .conf test is successful [root@localhost conf] # /usr/local/nginx/sbin/nginx -s reload |
2.2、在web2上新建虚拟主机abc.dd.cn
跟web1同样的操作:
增加网页目录/usr/local/nginx/html/dd/:
01 02 | [root@localhost html] # mkdir /usr/local/nginx/html/dd/ [root@localhost html] # vim /usr/local/nginx/html/dd/index.html |
添加一个abc.dd.cn.conf的虚拟主机:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 | [root@localhost html] # vim /usr/local/nginx/conf/vhost/abc.dd.cn.conf server { listen 80; server_name abc. dd .cn; location / { root /usr/local/nginx/html/dd/ ; index index.html index.php index.htm TempLoginPanel.html; } location ~ \.php$ { root /usr/local/nginx/html/dd/ ; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } |
重新加载nginx配置文件
01 02 03 04 | [root@localhost conf] # /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx .conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx .conf test is successful [root@localhost conf] # /usr/local/nginx/sbin/nginx -s reload |
2.3、配置负载均衡
在负载均衡机器(192.168.188.128)上:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | [root@localhost html] # vim /usr/local/nginx/conf/nginx.conf ... upstream www.doubles.cn { #ip_hash; server 192.168.188.128:81; server 192.168.188.129:80; } upstream abc. dd .cn { #ip_hash; server 192.168.188.128:81; server 192.168.188.129:80; } server { listen 80; server_name localhost; location / { #root html; #index index.html index.htm; proxy_pass http: // $host; proxy_connect_timeout 2s; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } ..... |
(注意):这里upstream后面的名字必须跟你访问的域名保持完全一致,否则将无法代理。因为proxy_pass是根据$host来匹配的。
重新加载nginx配置文件
01 02 03 04 | [root@localhost conf] # /usr/local/nginx/sbin/nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx .conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx .conf test is successful [root@localhost conf] # /usr/local/nginx/sbin/nginx -s reload |
测试:
再刷新:
测试之前的域名:
仍然可以进行负载均衡,所以生效。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具