最近繼續(xù)整理Linux相關(guān)文檔。這次整理的是Nginx,這里將自己整理的詳細(xì)文檔做個(gè)筆記。
1. 安裝環(huán)境依賴包
1、 gcC 語(yǔ)言編譯器套件。
2、 pcre 兼容正則表達(dá)式的庫(kù) rewrite 模塊需要。
3、 zlib 提供數(shù)據(jù)壓縮函數(shù)庫(kù) 例如gzip壓縮。
4、 openssl 使用https所需的ssl。
一起安裝四個(gè)依賴環(huán)境包 (如果某些組件已安裝可以不用安裝)
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
2. 下載和解壓安裝包
官網(wǎng)查找最新安裝包。
http://nginx.org/en/download.html
下載1.17.1下載地址
http://nginx.org/download/nginx-1.17.1.tar.gz
在/usr/local下創(chuàng)建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
這幾步如果有報(bào)錯(cuò),多數(shù)是因?yàn)橐蕾嚟h(huán)境沒(méi)裝好比如gcc等,需要重新安裝再重復(fù)此步驟。
添加到環(huán)境變量
ln -s /usr/local/nginx/sbin/nginx /usr/bin
安裝成功后查看版本
nginx -v
4. 設(shè)置開(kāi)機(jī)啟動(dòng)
vim /lib/systemd/system/nginx.service
注意nginx 路徑必須為自己安裝的路徑
【以下純文本可以復(fù)制】
[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
開(kāi)機(jī)啟動(dòng)
systemctl enable nginx
5. Nginx使用與配置
常用命令
nginx # 運(yùn)行nginx nginx -s reload # 重新載入配置文件并運(yùn)行 nginx -s reopen # 重啟 Nginx nginx -s stop # 停止 Nginx
運(yùn)行Nginx
nginx
直接輸入nginx 沒(méi)有任何其他提示證明啟動(dòng)成功
配置文件
位置(注意自己安裝的目錄)
vim /usr/local/nginx/conf/nginx.conf
默認(rèn)配置文件內(nèi)容
啟動(dòng)nginx后 可以直接通過(guò)http://localhost (或者h(yuǎn)ttp://自己的ip)訪問(wèn)。查看nginx歡迎頁(yè)面。
如果服務(wù)器80端口被占用了 那么使用nginx命令時(shí)會(huì)報(bào)錯(cuò)。請(qǐng)修改配置文件里的默認(rèn)80端口即可。
配置文件的修改后必須要:nginx –s reload 才能生效。
靜態(tài)服務(wù)器
server { listen 80; #監(jiān)聽(tīng)端口 server_name localhost; #如果綁定了域名 這里填寫具體域名 client_max_body_size 1024M; #客戶端最大上傳文件限制 location / { autoindex on; //開(kāi)啟目錄訪問(wèn) root /data/wwwroot/webapp; #站點(diǎn)目錄 index index.html; #首頁(yè) } }
動(dòng)靜分離
這里展示通過(guò)擴(kuò)展名分離的方法
當(dāng)然還有通過(guò)請(qǐng)求分離使用在localtion /static/ {} 等。
server { listen 80; #監(jiān)聽(tīng)端口 server_name localhost; #如果綁定了域名 這里填寫具體域名 #靜態(tài)數(shù)據(jù) location ~ .(gif|jpg|jpeg|png|bmp|swf|css|js)$ { root /data/wwwroot/webapp/html; } #動(dòng)態(tài)請(qǐng)求 location ~ .(aspx|cshtml)$ { proxy_pass http://localhost:8080 #動(dòng)態(tài)服務(wù)器站點(diǎn)運(yùn)行地址 } }
反向代理
適合單臺(tái)服務(wù)器應(yīng)用程序部署,轉(zhuǎn)發(fā)
server { listen 80; server_name localhost; client_max_body_size 1024M; location / { proxy_pass http://localhost:8080; #代理服務(wù)器 比如動(dòng)態(tài)應(yīng)用程序站點(diǎn) proxy_set_header Host $host:$server_port; #請(qǐng)求頭信息部分信息一并轉(zhuǎn)發(fā)到代理服務(wù)器 } }
均衡負(fù)載
最常用的,適合多臺(tái)服務(wù)器部署應(yīng)用程序,對(duì)外都是同一個(gè)域名或站點(diǎn)訪問(wèn)
# 服務(wù)器列表 upstream webapp{ server 192.1681.2:8080 weight=9; #weight 權(quán)重 server 192.168.1.3:8080 weight=1; } server { listen 81; server_name localhost; client_max_body_size 1024M; location / { proxy_pass http://webapp; #代理指向服務(wù)器列表 proxy_set_header Host $host:$server_port; #獲取真實(shí)客戶端訪問(wèn)IP,原理還是將客戶端和IP有關(guān)的請(qǐng)求頭轉(zhuǎn)發(fā)到應(yīng)用服務(wù)器 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開(kāi)啟SSL模塊
檢查自己是否有開(kāi)啟SSL模塊
nginx –V (大寫的V)
看到有with-http_ssl_module證明已經(jīng)開(kāi)啟。
如果沒(méi)有則證明沒(méi)有開(kāi)啟;以下操作都是針對(duì)沒(méi)有開(kāi)啟with-http_ssl_module的。
進(jìn)入自己的安裝目錄執(zhí)行:
./configure –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module
配置完成后執(zhí)行編譯
make
備份已經(jīng)安裝好的nginx (注意自己的安裝目錄)
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
停止正在運(yùn)行的nginx
nginx -s stop
復(fù)制新編譯好的nginx覆蓋原有nginx
cp ./objs/nginx /usr/local/nginx/sbin/
查看是否配置成功
nginx –V (大寫的V)
修改站點(diǎn)配置節(jié)點(diǎn)
#server { listen 443 ssl; #監(jiān)聽(tīng)端口改為443 server_name localhost; ssl_certificate cert.pem; #證書prm文件路徑 ssl_certificate_key cert.key; #證書key文件路徑 ssl_session_cache shared:SSL:1m; #設(shè)置會(huì)話緩存大小 ssl_session_timeout 5m; #客戶端可以重用會(huì)話緩存中ssl參數(shù)的過(guò)期時(shí)間 ssl_ciphers HIGH:!aNULL:!MD5; #加密方式 ssl_prefer_server_ciphers on; #設(shè)置加密算法時(shí),優(yōu)先使用服務(wù)端的加密算法 location / { root html; index index.html index.htm; } }
配置Http2
配置Http2 Nginx 版本必須大于1.10.0以上。Openssl版本必須大于1.0.2。
在Nginx里面使用Http2必須得使用Https才行。
可以通過(guò)Nginx –V查看目前已安裝的版本。
Http2需要開(kāi)啟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