最近換了一家公司,工作比較忙,因為工作環境的關系導緻不能經常寫部落格了,暫時手裡也就寫了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
出現如下界面說明配置檔案沒問題。
/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測試結果:
59.108.119.51測試結果:
現在測試本機和223.202.18.16通路網站是否是到nginx的維護頁面呢?當然也需要修改兩台機器的hosts檔案。增加上面一樣的内容。
本機測試結果:
223.202.18.16測試結果:
總結:正常達到預期的效果。