1. 環境搭建
依賴 gcc openssl-devel pcre-devel zlib-devel
1.1.安裝依賴
yum -y install gcc openssl-devel pcre-devel zlib-devel
1.2.上傳nginx壓縮包並解壓
tar -zxvf nginx-1.8.1.tar.gz
1.3.進入目錄並執行configure命令
cd nginx-1.8.1
./configure --prefix=/home/nginx
1.4.編譯安裝
make && make install
最終目錄結構:
1.5.啟動nginx訪問
進入nginx安裝目錄(指定好的那個文件夾)中的sbin文件夾,然后啟動nginx
cd sbin/
./nginx
瀏覽器訪問: 虛擬機ip的80端口

nginx默認監聽80端口,當出現以上信息,說明安裝啟動成功。
1.6.常用命令
使用語法:nginx -s 信號
信號可以是下列之一:
- stop - 快速關機
- quit - 優雅的關機
- reload - 重新加載配置文件
- reopen - 重新打開日志文件
例如,要停止nginx進程並等待工作進程完成當前請求的服務,可以執行以下命令:
./nginx -s quit
2. 負載均衡搭建
模擬: 1個nginx 和 3個Tomcat服務
2.1.Tomcat配置
把Tomcat壓縮包解壓復制3份,並依次修改conf/server.xml
中的端口配置
<Server port="18001" shutdown="SHUTDOWN">
...
<Service name="Catalina">
<Connector port="8001" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8441" />
- 第一組: 18001 8001 8441
- 第二組: 18002 8002 8442
- 第三組: 18003 8003 8443
進入bin目錄執行./startup.sh命令啟動服務
2.2.nginx配置
修改nginx.conf
文件
#user nobody;
worker_processes 1;
error_log logs/error.log;# 開啟日志
pid logs/nginx.pid;
...
upstream lyf {
server 192.168.37.220:8001; # 3個tomcat服務
server 192.168.37.220:8002;
server 192.168.37.220:8003;
}
server {
listen 80;
server_name 192.168.37.220;# 監聽ip
location / {
proxy_pass http://lyf; # 設置代理
index index.html index.htm;
}
}
標lyf
的部分要對應,名稱可以自由指定.
2.3.訪問nginx
本機linux測試nginx地址為: 192.168.37.220
,為了看到訪問的是那台服務器,可以修改webapps/ROOT/index.jsp
,標記為8001 8002 8003
進行區別,多次訪問結果:


3. 負載均衡配置
nginx支持以下負載均衡機制
- 循環 - 對應用程序服務器的請求以循環方式分發
- 最少連接數 - 將下一個請求分配給活動連接數最少的服務器
- ip-hash - 哈希函數用於確定下一個請求(基於客戶端的IP地址)應該選擇哪個服務器
3.1.加權負載平衡
權重越大,分發到的請求就越多
upstream lyf {
server 192.168.37.220:8001 weight=3;
server 192.168.37.220:8002;
server 192.168.37.220:8003;
}
3.2.最少連接負載平衡
將新請求分發給不太繁忙的服務器,避免服務器過載
upstream lyf {
least_conn;
server 192.168.37.220:8001;
server 192.168.37.220:8002;
server 192.168.37.220:8003;
}
3.3.會話持久性
使客戶端的會話“粘滯”或“持久”,也就是說用戶如果第一次訪問被分發到8001,那么以后請求都在8001,而不會被再次分發到其他端口
upstream lyf {
ip_hash;
server 192.168.37.220:8001;
server 192.168.37.220:8002;
server 192.168.37.220:8003;
}
3.4.訪問控制
Nginx還可以對IP的訪問進行控制,allow代表允許,deny代表禁止.
location / {
deny 192.168.78.1;
allow 192.168.78.0/24;
allow 10.1.1.0/16;
allow 192.168.1.0/32;
deny all;
proxy_pass http://lyf;
}
從上到下的順序,先禁止了192.168.78.1,接下來允許了3個網段,其中包含了一個ipv6,最后未匹配的IP全部禁止訪問.