Nginx Nginx是個web伺服器,常用作靜態文件伺服器,反向代理伺服器,郵件代理伺服器,負載均衡伺服器 Nginx安裝 1. 安裝淘寶nginx,編譯安裝,先解決模塊依賴 yum install gcc patch libffi-devel python-devel zlib-devel bz ...
Nginx
Nginx是個web伺服器,常用作靜態文件伺服器,反向代理伺服器,郵件代理伺服器,負載均衡伺服器
Nginx安裝
1. 安裝淘寶nginx,編譯安裝,先解決模塊依賴
yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y
2. 獲取淘寶nginx的源代碼
wget http://tengine.taobao.org/download/tengine-2.3.2.tar.gz
3. 解壓縮源代碼包
tar -zxvf tengine-2.3.2.tar.gz
4. 進入源代碼目錄開始編譯三部曲
①指定安裝路徑
./configure --prefix=/opt/tngx
②編譯且安裝
make && make install
③安裝完成之後,進入Nginx的目錄
[root@localhost tngx]#pwd
/opt/tngx
[root@localhost tngx]#ls
conf html logs sbin
-
- conf 存放配置文件
- html 存放前端頁面
- logs nginx的運行日誌
- sbin nginx的可執行命令目錄
進入sbin目錄
[root@localhost tngx]#cd sbin
-
- ./nginx 啟動Nginx
- ./nginx -s stop 停止Nginx
- ./nginx -t 檢查nginx.conf的語法是否正確
- ./nginx -s reload 不重啟Nginx,重新載入Nginx配置
Nginx配置
配置文件為conf目錄下的nginx.conf
Nginx虛擬主機
http {
#nginx支持多虛擬主機,只需要寫入多個server關鍵字即可
#虛擬主機1
server {
#基於埠的虛擬主機區分
listen 80;
#基於功能變數名稱的虛擬主機區分
server_name www.asdf.com;
#charset koi8-r;
#access_log logs/host.access.log main;
#access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G" main;
#這裡是nginx的url匹配,如同django的url一樣
#當請求 http://192.168.182.130:80/abc.jpg 這樣的url時,就進入如下location匹配
#這個是最低級的匹配,所有請求都會走到這裡
location / {
#root關鍵字定義虛擬主機的根目錄,這裡是可以修改的
root /opt/abc/;
#index參數定義首頁文件的名字
index index.html;
}
}
#虛擬主機2
server {
#基於埠的虛擬主機區分
listen 81;
#基於功能變數名稱的虛擬主機區分
server_name www.qwer.com;
#charset koi8-r;
#access_log logs/host.access.log main;
#access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G" main;
#這裡是nginx的url匹配,如同django的url一樣
#當請求 http://192.168.182.130:81/xyz.jpg 這樣的url時,就進入如下location匹配
#這個是最低級的匹配,所有請求都會走到這裡
location / {
#root關鍵字定義虛擬主機的根目錄, 這裡是可以修改的
root /opt/xyz/;
#index參數定義首頁文件的名字
index index.html;
}
}
}
Nginx錯誤頁面404優化
server {
listen 80;
server_name www.asdf.com;
#通過error_page參數定義即可
#404.html文件的相對路徑為root定義的目錄
error_page 404 /404.html;
location / {
root /opt/abc/;
index index.html;
}
}
Nginx反向代理
-
環境準備
-
機器1 192.168.182.130,代理伺服器
-
機器2 192.168.182.131,資源伺服器
-
-
反向代理伺服器配置如下
在代理伺服器的配置文件中,找到server{}虛擬主機,在location內設置proxy_pass參數
server {
listen 80;
server_name www.asdf.com;
#charset koi8-r;
#access_log logs/host.access.log main;
#access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G" main;
location / {
#實現反向代理的功能參數
#實現反向代理的功能參數
#實現反向代理的功能參數
proxy_pass http://192.168.182.131;
}
}
Nginx負載均衡
-
環境準備
-
1台負載均衡伺服器
-
192.168.182.130 負載均衡伺服器
-
-
2台資源伺服器
-
192.168.182.131 資源伺服器1
-
192.168.182.132 資源伺服器2
-
-
-
在負載均衡伺服器配置文件中,定義upstream負載均衡池
#預設輪詢方式
upstream test {
server 192.168.182.131;
server 192.168.182.132;
}
#權重方式
upstream test {
server 192.168.182.131 weight=4;
server 192.168.182.132 weight=1;
}
#ip哈希方式,根據用戶的來源ip計算出哈希值,永遠只指派給一個伺服器去解析
#ip哈希不得與權重共同使用
upstream test {
server 192.168.182.131;
server 192.168.182.132;
ip_hash;
}
-
server{}虛擬主機在location內設置proxy_pass參數,將請求轉發給負載均衡池
server {
listen 80;
server_name www.asdf.com;
#charset koi8-r;
#access_log logs/host.access.log main;
#access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G" main;
location / {
#root /opt/abc/;
#index index.html;
#請求轉發給負載均衡池
#請求轉發給負載均衡池
#請求轉發給負載均衡池
proxy_pass http://test;
}
}