最近繼續整理Linux相關文件。這次整理的是Nginx,這裡將自己整理的詳細文件做個筆記。
1. 安裝環境依賴包
1、 gcc 語言編譯器套件。
2、 pcre 相容正規表示式的庫 rewrite 模組需要。
3、 zlib 提供資料壓縮函式庫 例如gzip壓縮。
4、 openssl 使用https所需的ssl。
一起安裝四個依賴環境包 (如果某些元件已安裝可以不用安裝)
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
2. 下載和解壓安裝包
官網查詢最新安裝包。
http://nginx.org/en/download.html
下載1.17.1下載地址
http://nginx.org/download/nginx-1.17.1.tar.gz
在/usr/local下建立Nginx目錄。 (目錄可以自定義)
mkdir nginx
下載
wget http://nginx.org/download/nginx-1.17.1.tar.gz
解壓
tar -xvf nginx-1.17.1.tar.gz
3. 安裝
切換到安裝後的目錄。
cd nginx-1.17.1
./configure
make
make install
這幾步如果有報錯,多數是因為依賴環境沒裝好比如gcc等,需要重新安裝再重複此步驟。
新增到環境變數
ln -s /usr/local/nginx/sbin/nginx /usr/bin
安裝成功後檢視版本
nginx -v
4. 設定開機啟動
vim /lib/systemd/system/nginx.service
注意nginx 路徑必須為自己安裝的路徑
【以下純文字可以複製】
[Unit] Description=nginx - high performance web server Documentation=http://nginx.org/en/docs/ After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s stop PrivateTmp=true [Install] WantedBy=multi-user.target
開機啟動
systemctl enable nginx
5. Nginx使用與配置
常用命令
nginx # 執行nginx nginx -s reload # 重新載入配置檔案並執行 nginx -s reopen # 重啟 Nginx nginx -s stop # 停止 Nginx
執行Nginx
nginx
直接輸入nginx 沒有任何其他提示證明啟動成功
配置檔案
位置(注意自己安裝的目錄)
vim /usr/local/nginx/conf/nginx.conf
預設配置檔案內容
啟動nginx後 可以直接通過http://localhost (或者http://自己的ip)訪問。檢視nginx歡迎頁面。
如果伺服器80埠被佔用了 那麼使用nginx命令時會報錯。請修改配置檔案裡的預設80埠即可。
配置檔案的修改後必須要:nginx –s reload 才能生效。
靜態伺服器
server { listen 80; #監聽埠 server_name localhost; #如果繫結了域名 這裡填寫具體域名 client_max_body_size 1024M; #客戶端最大上傳檔案限制 location / { autoindex on; //開啟目錄訪問 root /data/wwwroot/webapp; #站點目錄 index index.html; #首頁 } }
動靜分離
這裡展示通過副檔名分離的方法
當然還有通過請求分離使用在localtion /static/ {} 等。
server { listen 80; #監聽埠 server_name localhost; #如果繫結了域名 這裡填寫具體域名 #靜態資料 location ~ .(gif|jpg|jpeg|png|bmp|swf|css|js)$ { root /data/wwwroot/webapp/html; } #動態請求 location ~ .(aspx|cshtml)$ { proxy_pass http://localhost:8080 #動態伺服器站點執行地址 } }
反向代理
適合單臺伺服器應用程式部署,轉發
server { listen 80; server_name localhost; client_max_body_size 1024M; location / { proxy_pass http://localhost:8080; #代理伺服器 比如動態應用程式站點 proxy_set_header Host $host:$server_port; #請求頭資訊部分資訊一併轉發到代理伺服器 } }
均衡負載
最常用的,適合多臺伺服器部署應用程式,對外都是同一個域名或站點訪問
# 伺服器列表 upstream webapp{ server 192.1681.2:8080 weight=9; #weight 權重 server 192.168.1.3:8080 weight=1; } server { listen 81; server_name localhost; client_max_body_size 1024M; location / { proxy_pass http://webapp; #代理指向伺服器列表 proxy_set_header Host $host:$server_port; #獲取真實客戶端訪問IP,原理還是將客戶端和IP有關的請求頭轉發到應用伺服器 proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
配置Https
https需要依賴openssl包。
nginx開啟SSL模組
檢查自己是否有開啟SSL模組
nginx –V (大寫的V)
看到有with-http_ssl_module證明已經開啟。
如果沒有則證明沒有開啟;以下操作都是針對沒有開啟with-http_ssl_module的。
進入自己的安裝目錄執行:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
配置完成後執行編譯
make
備份已經安裝好的nginx (注意自己的安裝目錄)
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
停止正在執行的nginx
nginx -s stop
複製新編譯好的nginx覆蓋原有nginx
cp ./objs/nginx /usr/local/nginx/sbin/
檢視是否配置成功
nginx –V (大寫的V)
修改站點配置節點
#server { listen 443 ssl; #監聽埠改為443 server_name localhost; ssl_certificate cert.pem; #證書prm檔案路徑 ssl_certificate_key cert.key; #證書key檔案路徑 ssl_session_cache shared:SSL:1m; #設定會話快取大小 ssl_session_timeout 5m; #客戶端可以重用會話快取中ssl引數的過期時間 ssl_ciphers HIGH:!aNULL:!MD5; #加密方式 ssl_prefer_server_ciphers on; #設定加密演算法時,優先使用服務端的加密演算法 location / { root html; index index.html index.htm; } }
配置Http2
配置Http2 Nginx 版本必須大於1.10.0以上。Openssl版本必須大於1.0.2。
在Nginx裡面使用Http2必須得使用Https才行。
可以通過Nginx –V檢視目前已安裝的版本。
Http2需要開啟with-http_v2_module模組;
配置with-http_v2_module等模組然後make 然後覆蓋安裝等。 具體不就不再演示了和配置Https一樣。
./configure --prefix=/usr/share/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module