天天看點

nginx基于用戶端通路IP重定向

最近換了一家公司,工作比較忙,因為工作環境的關系導緻不能經常寫部落格了,暫時手裡也就寫了LDAP+Samba+Vsftp統一集中認證項目文檔、weblogic叢集部署安裝文檔,由于各種關系導緻不能外發,哈哈!各位博友原諒!現在就寫一篇關于nginx的重定向文檔吧!

項目需求:

公司現在的網站架構是nginx+apache反向代理,現需要将用戶端通路的某兩個網段IP位址重定向到應用首頁,其餘的所有IP位址通路都重定向到維護頁面。

環境介紹:

為了實驗友善,這裡我nginx+apache就用一台伺服器設定,另外三台機器充當測試機角色。

主機名

IP位址

系統版本

用途

myling

72.46.131.205

CentOS6.4(64位)

Nginx+apache

centos

173.252.246.188

測試專用

zhunzhun.zeng

59.108.119.51

Windows xp

未知

223.202.18.16

Windows server 2003

預期達到的效果:

1、173.252.246網段、59.108.119網段的IP通路應用的首頁。

2、72.46.131網段、223.202.18網段的IP位址通路維護頁面。

實施步驟:

說明:這裡我隻簡單的測試,nginx、apache用的rpm包。

1、安裝nginx和apache

yum install –y nginx httpd

2、在預設的nginx配置目錄下建立一個pool.conf檔案

vi /etc/nginx/conf.d/pool.conf

内容如下:

upstream vhttpd_server_pool {

  ip_hash;

  server 72.46.131.205:8877;        這裡我apache用的是8877端口

}

3、在同樣的目錄下建立一個test.conf檔案。暫時用一個測試域名test.cn。

vi /etc/nginx/conf.d/test.conf

server {

listen 80;

    server_name test.cn;

    location / {

    proxy_set_header HOST $host;

    proxy_set_header X-Real-IP $remote_addr;

    proxy_set_header Client-IP $remote_addr;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    if ($remote_addr ~* "^(173.252.246)") {

    proxy_pass http://vhttpd_server_pool;

    }

    if ($remote_addr ~* "^(59.108.119)") {

4、在apache預設釋出的目錄下建立一個測試頁面index.html

vi /var/www/html/index.html

Hello!zengzhunzhun!

5、在nginx預設的釋出目錄下建立一個維護頁面index.html

vi /usr/share/nginx/html/index.html

網站正在維護中!請稍後通路!

6、啟動nginx和apache,啟動nginx前先檢查配置檔案文法是否正确

/etc/init.d/nginx configtest

出現如下界面說明配置檔案沒問題。

nginx基于用戶端通路IP重定向

/etc/init.d/nginx start

/etc/init.d/httpd start

7、測試工作

首先測試nginx配置檔案裡面定義的兩個IP網段能正常通路後端的apache

173.252.246.188和59.108.119.51兩台測試機的hosts檔案增加IP和域名的映射關系,如下:

72.46.131.205   test.cn

173.252.246.188測試結果:

nginx基于用戶端通路IP重定向

59.108.119.51測試結果:

nginx基于用戶端通路IP重定向

現在測試本機和223.202.18.16通路網站是否是到nginx的維護頁面呢?當然也需要修改兩台機器的hosts檔案。增加上面一樣的内容。

本機測試結果:

nginx基于用戶端通路IP重定向

223.202.18.16測試結果:

nginx基于用戶端通路IP重定向

總結:正常達到預期的效果。

上一篇: vsftp需求