首先說明一下,nginx的反向代理和nginx的負載均衡很類似,nginx通常被做爲反向代理實現負載均衡,有的人也把nginx的反向代理當作負載均衡,把nginx的負載均衡當作反向代理。nginx有不少功能和高性能,而它的強大的反向代理功能是它火的最主要緣由。
php
這裏nginx的安裝就略去了,首先查看配置文件:
html
[root@nginx conf]# cat nginx.confnginx
user nobody;apache
worker_processes 1;服務器
error_log logs/error.log;app
pid logs/nginx.pid;負載均衡
events {ide
worker_connections 1024;性能
use epoll;網站
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
include extra/fanxiangdaili.conf; ///引用fanxiangdaili.conf這個文件
}
而後查看一下我配置的反向代理文件裏面都是哪些內容:
[root@nginx extra]# cat fanxiangdaili.conf
server {
listen 80; ///監聽本機的全部80端口
server_name 10.10.16.29; ///客戶端要訪問本服務器時輸入的域名,因爲這裏沒有配置dns服務器,就用ip地址代替相應的域名,效果是同樣的。
location / {
proxy_pass http://127.0.0.1:88; ///將客戶端發出的請求所有送到127.0.0.1這臺機器的88端口,也就是本機的88端口,這裏的88端口,我用的是Apache,通常nginx做爲反向代理時,代理的是動態頁面(好比php),而後將動態頁面請求扔給Apache處理,扔的過程就是靠這句代碼實現
}
}
[root@nginx conf]# yum install httpd -y ///搭建Apache服務器
[root@nginx conf]# vi httpd.conf ///修改Apache的監聽端口,將默認的80端口改爲88端口
134 Listen 88
[root@nginx html]# cat index.html ///建立Apache網站的主頁(/var/www/html/index.html)
hehe apache
[root@nginx sbin]# ./nginx -s reload ///重啓nginx服務,使更改生效
ok,到這裏,客戶端能夠訪問了,看以下效果:
用戶訪問10.10.16.29,返回了Apache的主頁,說明nginx的反向代理功能作成功了。
這裏還能夠將要反向代理的機器配成其餘機器而不是本機,在fanxiangdaili.conf配置文件改就好了,不過,通過驗證,一臺nginx服務器只能代理一個ip,想代理多個ip的話就用負載均衡吧(即upstream模塊)。
[root@nginx extra]# cat fanxiangdaili.conf
server {
listen 80;
server_name 10.10.16.29;
location / {
# proxy_pass http://127.0.0.1:88;
proxy_pass http://10.10.16.91;
}
}
[root@nginx sbin]# ./nginx -s reload
如今客戶端再訪問,見效果:
結果顯示,訪問同一個地址10.10.16.29,獲得的是另一個頁面,這代表nginx的反向代理功能作成功了!