Nginx配置實現(xiàn)用IP灰度測試(不同用戶ID)
一.配置Nginx實現(xiàn)用IP測試灰度發(fā)布
實驗要求
要求不同IP的客戶訪問相同代理時,可以看到不同集群主機的內(nèi)容
環(huán)境準備
主機名 IP地址 角色
proxy(已存在) eth1:192.168.99.5/24 代理服務器
web1(已存在) eth1:192.168.99.100/24 web服務器
web2(已存在) eth1:192.168.99.200/24 web服務器
創(chuàng)建不同集群,準備多臺集群主機
通過$remote_addr變量識別不同客戶機
1)為web1搭建nginx虛擬主機
[root@proxy python]# scp /root/lnmp_soft/nginx-1.22.1.tar.gz 192.168.99.100:/root [root@proxy python]# scp /root/lnmp_soft/nginx-1.22.1.tar.gz 192.168.99.200:/root [root@web1 ~]# systemctl disable --now httpd #取消開機自啟,停止httpd服務 [root@web1 ~]# yum -y install make gcc openssl-devel pcre-devel #安裝基礎依賴包 [root@web1 ~]# tar -xf nginx-1.22.1.tar.gz [root@web1 ~]# cd nginx-1.22.1/ [root@web1 nginx-1.22.1]# ./configure [root@web1 nginx-1.22.1]# make && make install [root@web1 nginx-1.22.1]# vim /usr/local/nginx/conf/nginx.conf #默認server listen 80的不要動,直接另外寫一個server http { ... server { #此為新添加的server listen 8001; server_name localhost; root html8001; index index.html; } server { listen 80; server_name localhost; ... [root@web1 nginx-1.22.1]# /usr/local/nginx/sbin/nginx [root@web1 nginx-1.22.1]# mkdir /usr/local/nginx/html8001 [root@web1 nginx-1.22.1]# echo web1-nginx-80 > /usr/local/nginx/html/index.html [root@web1 nginx-1.22.1]# echo web1-nginx-8001 > /usr/local/nginx/html8001/index.html
使用web1測試
[root@web1 nginx-1.22.1]# curl 192.168.99.100 web1-nginx-80 [root@web1 nginx-1.22.1]# curl 192.168.99.100:8001 web1-nginx-8001
2)為web2搭建nginx
[root@web2 ~]# systemctl disable --now httpd [root@web2 ~]# yum -y install make gcc openssl-devel pcre-devel #安裝基礎依賴包 [root@web2 ~]# tar -xf nginx-1.22.1.tar.gz [root@web2 ~]# cd nginx-1.22.1/ [root@web2 nginx-1.22.1]# ./configure [root@web2 nginx-1.22.1]# make && make install [root@web2 nginx-1.22.1]# /usr/local/nginx/sbin/nginx [root@web2 nginx-1.22.1]# echo web2-nginx-80 > /usr/local/nginx/html/index.html
3)使用proxy主機在nginx配置中創(chuàng)建集群
[root@proxy python]# killall uwsgi #停止uwsgi [root@proxy python]# cd /usr/local/nginx [root@proxy nginx]# cp conf/nginx.conf.default conf/nginx.conf #恢復配置文件 [root@proxy nginx]# vim conf/nginx.conf http { ... upstream default { #正常業(yè)務集群 server 192.168.99.100:80; server 192.168.99.200:80; } upstream s8001 { server 192.168.99.100:8001; #新版本業(yè)務集群1 } server { listen 80; server_name localhost; set $group "default"; #自己定義變量$group,值為default,訪問default集群 if ($remote_addr ~ "192.168.99.1"){ #如果客戶機ip是包含192.168.99.1就訪問新版本業(yè)務集群1,$remote_addr為nginx的內(nèi)置變量,代表訪問者的ip set $group s8001; #變量重新賦值 } #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://$group; #調(diào)用集群 root html; index index.html index.htm; } ... [root@proxy nginx]# /usr/local/nginx/sbin/nginx -s reload
使用proxy測試
[root@proxy ~]# curl 192.168.99.5 #顯示正常業(yè)務集群 web1-nginx-80 [root@proxy ~]# curl 192.168.99.5 #顯示正常業(yè)務集群 web2-nginx-80
web1訪問proxy
[root@web1 ~]# curl 192.168.99.5 #顯示新版本業(yè)務集群1 web1-nginx-8001
二、通過不同用戶ID測試灰度發(fā)布
實驗要求
不同ID的客戶訪問相同代理時,可以看到不同集群主機的內(nèi)容
部署LNPM環(huán)境(已操作)
proxy主機部署LNMP服務器相關(guān)軟件(前面已經(jīng)安裝過,在此不在重復安裝)
1)proxy主機修改Nginx配置文件(修改默認首頁與動靜分離)
[root@proxy ~]# cd /usr/local/nginx [root@proxy nginx]# cp conf/nginx.conf.default conf/nginx.conf #恢復配置文件 [root@proxy nginx]# vim /usr/local/nginx/conf/nginx.conf ... location ~ \.php$ { root html; fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; include fastcgi.conf; } ...
php-fpm的配置文件之前已經(jīng)修改好,此時不用修改
啟動LNMP服務器相關(guān)的服務
1)重新加載Nginx服務
[root@proxy nginx]# /usr/local/nginx/sbin/nginx -s reload [root@proxy nginx]# ss -antlp | grep :80
2)啟動MySQL服務(已經(jīng)啟動則不需要執(zhí)行)
[root@proxy nginx]# systemctl start mariadb [root@proxy nginx]# systemctl status mariadb
3)啟動PHP-FPM服務(已經(jīng)啟動則不需要執(zhí)行)
[root@proxy nginx]# systemctl start php-fpm [root@proxy nginx]# systemctl status php-fpm [root@proxy nginx]# cp /root/lnmp_soft/php_scripts/test.php /usr/local/nginx/html/ [root@proxy nginx]# curl 192.168.99.5/test.php #測試動態(tài)頁面 <html> <body> This is HTML message </br> c is bigger</body> </html>
4) 配置好lnmp之后,拷貝帶登錄效果的測試頁面
[root@proxy nginx]# cd /root/lnmp_soft/php_scripts/ [root@proxy nginx]# tar -xf php-session-demo.tar.gz #釋放帶登錄功能的網(wǎng)頁 [root@proxy nginx]# cp -r php-session-demo/* /usr/local/nginx/html/ #拷貝頁面到nginx中
使用瀏覽器訪問192.168.99.5/index.php 可以看到有登錄界面的網(wǎng)頁
如果想要訪問此網(wǎng)站時直接輸入http://192.168.99.5就能訪問到這個登錄頁面,可以更改以下配置實現(xiàn)
[root@proxy nginx]# vim /usr/local/nginx/conf/nginx.conf server { listen 80; location / { root html; index index.php index.html index.htm; #新添加index.php } ... location ~ \.php$ { root html; fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; include fastcgi.conf; } ... [root@proxy nginx]# /usr/local/nginx/sbin/nginx -s reload
直接輸入http://192.168.99.5就能訪問到登錄頁面,輸入任意用戶名和密碼登錄測試即可
注:這里index.php是登錄前頁面 ,home.php是登錄后才能看的頁面
修改home.php頁面
1)修改home.php頁面
[root@proxy php_scripts]# vim /usr/local/nginx/html/home.php #修改php頁面,將原有Welcome那行修改成以下狀態(tài) Welcome : <?php if(preg_match("/^abc/",$_SESSION['login_user'])) { #preg_match匹配正則,如果登錄賬號是以abc開頭,就連接99.100,否則連接99.200 echo "<a ; } else { echo "<a ; } ?>
2)測試
瀏覽器訪問192.168.99.5/index.php分別輸入不同名稱的賬戶,可以看到"開始"連接的是不同的地址
三、通過不同用戶ID測試灰度發(fā)布
實驗要求
不同ID的客戶訪問相同代理時,可以看到不同集群主機的內(nèi)容
部署LNPM環(huán)境(已操作)
proxy主機部署LNMP服務器相關(guān)軟件(前面已經(jīng)安裝過,在此不在重復安裝)
1)proxy主機修改Nginx配置文件(修改默認首頁與動靜分離)
[root@proxy ~]# cd /usr/local/nginx [root@proxy nginx]# cp conf/nginx.conf.default conf/nginx.conf #恢復配置文件 [root@proxy nginx]# vim /usr/local/nginx/conf/nginx.conf ... location ~ \.php$ { root html; fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_index index.php; include fastcgi.conf; } ...
php-fpm的配置文件之前已經(jīng)修改好,此時不用修改
啟動LNMP服務器相關(guān)的服務
1)重新加載Nginx服務
[root@proxy nginx]# /usr/local/nginx/sbin/nginx -s reload [root@proxy nginx]# ss -antlp | grep :80
2)啟動MySQL服務(已經(jīng)啟動則不需要執(zhí)行)
[root@proxy nginx]# systemctl start mariadb [root@proxy nginx]# systemctl status mariadb
3)啟動PHP-FPM服務(已經(jīng)啟動則不需要執(zhí)行)
[root@proxy nginx]# systemctl start php-fpm [root@proxy nginx]# systemctl status php-fpm [root@proxy nginx]# cp /root/lnmp_soft/php_scripts/test.php /usr/local/nginx/html/ [root@proxy nginx]# curl 192.168.99.5/test.php #測試動態(tài)頁面 <html> <body> This is HTML message </br> c is bigger</body> </html>
到此這篇關(guān)于Nginx配置實現(xiàn)用IP灰度測試(不同用戶ID)的文章就介紹到這了,更多相關(guān)Nginx IP灰度測試內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx實現(xiàn)https網(wǎng)站配置代碼實例
這篇文章主要介紹了Nginx實現(xiàn)https網(wǎng)站配置代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-11-11Nginx+PHP(FastCGI)搭建高并發(fā)WEB服務器(自動安裝腳本)第二版
Nginx 0.7.x + PHP 5.2.10(FastCGI)搭建勝過Apache十倍的Web服務器(第5版) 編寫2011-04-04Nginx下Wordpress的永久鏈接實現(xiàn)(301,404等)
經(jīng)過多番測試,終于在nginx下實現(xiàn)了rewrite的功能,WrodPress的永久鏈接終于生效了2012-09-09Nginx內(nèi)網(wǎng)環(huán)境開啟https雙協(xié)議的實現(xiàn)
本文主要介紹了Nginx內(nèi)網(wǎng)環(huán)境開啟https雙協(xié)議,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-02-02