Nginx安裝及具體應用小結(jié)
Centos7安裝Nginx
下載地址:nginx: download
中間這個就是tar.gz包
Centos7安裝Nginx
- 下載nginx-1.16.1.tar.gz
- 上傳到Centos7中的/user/local目錄下
- 安裝Nginx依賴的包
- yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
- 解壓 tar -zxvf nginx-1.16.1.tar.gz
- 在/user/local創(chuàng)建一個目錄 mkdir -p /user/local/nginx
- 在/usr/local/nginx-1.16.1目錄下執(zhí)行configure./configure --prefix=/usr/local/nginx
- 安裝 make && make install
檢查配置文件正確性
在/usr/local/nginx/sbin目錄下執(zhí)行./nginx -t
啟動Nginx
在/usr/local/nginx/sbin目錄下啟動nginx
./nginx
防火墻開啟80端口
就能訪問到Nginx首頁了
Nginx命令
(1)啟動命令:在/usr/local/nginx/sbin目錄下執(zhí)行 ./nginx
(2)關閉命令:在/usr/local/nginx/sbin目錄下執(zhí)行 ./nginx -s stop
(3)重新加載命令:在/usr/local/nginx/sbin目錄下執(zhí)行 ./nginx -s reload
(4)查看版本:在/usr/local/nginx/sbin目錄下執(zhí)行 ./nginx -v
(5)查看進程:ps -ef|grep nginx
Nginx具體應用
反向代理
反向代理服務器位于用戶與目標服務器之間,但是對于用戶而言,反向代理服務器就相當于目標服務器,即用戶直接訪問反向代理服務器就可以獲取目標服務器的資源,反向代理服務器負責將請求轉(zhuǎn)發(fā)給目標服務器。用戶不需要知道目標服務器的地址,也無需在用戶端做出任何設定。
配置反向代理:
server { listen 82; server_name localhost; location / { proxy_pass http://192.168.205.1:8080; #反向代理配置,將請請求轉(zhuǎn)發(fā)到指定服務 }
當我們192.168.205.1:80 就會轉(zhuǎn)發(fā)到=>http://192.168.205.1:8080
如果location配置如下:
server { listen 80; server_name localhost; location ~ /tom/ { proxy_pass http://127.0.0.1:8080; #反向代理配置,將請請求轉(zhuǎn)發(fā)到指定服務 }
訪問192.168.205.1:80/tom/index.html就會訪問=>192.168.205.1:8080/tom/index.html
location指令說明
該指令用于匹配 URL。
語法如下:
1、= :用于不含正則表達式的 uri 前,要求請求字符串與 uri 嚴格匹配,如果匹配成功,就停止繼續(xù)向下搜索并立即處理該請求。
2、~:用于表示 uri 包含正則表達式,并且區(qū)分大小寫。
3、~:用于表示 uri 包含正則表達式,并且不區(qū)分大小寫。
4、^~:用于不含正則表達式的 uri 前,要求 Nginx 服務器找到標識 uri 和請求字符串匹配度最高的 location 后,立即使用此 location 處理請求,而不再使用 location 塊中的正則 uri 和請求字符串做匹配。
注意:如果 uri 包含正則表達式,則必須要有 ~ 或者 ~ 標識。
負載均衡
配置負載均衡
upstream稱為上游服務器,即真實處理請求的業(yè)務服務器。
upstream targetserver{ #定義一組服務器 server 192.168.205.1:8080; server 192.168.205.1:8081; } server{ listen 8080; server_name localhost; location / { proxy_pass http://targetserver; } }
名稱 | 說明 |
---|---|
輪詢 | 默認方式 |
weight | 權(quán)重方式 |
ip_hash | 依據(jù)ip分配方式 |
least_conn | 依據(jù)最小連接方式 |
url_hash | 依據(jù)url分配方式 |
fair | 依據(jù)響應時間方式 |
解釋:
①輪詢(默認)
每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除
②weight
weight代表權(quán),重默認為1,權(quán)重越高被分配的客戶端越多
指定輪詢幾率,weight和訪問比率成正比,用于后端服務器性能不均的情況。 例如:
upstream server_pool{ server 192.168.10.1 weight=1; server 192.168.10.2 weight=2; server 192.168.10.3 weight=3; }
③ip_hash
每個請求按訪問ip的hash結(jié)果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題。 例如:
upstream server_pool{ ip_hash; server 192.168.10.1:80; server 192.168.10.2:80; server 192.168.10.3:80; }
④fair(第三方)
按后端服務器的響應時間來分配請求,響應時間短的優(yōu)先分配。
upstream server_pool{ server 192.168.10.1:80; server 192.168.10.2:80; server 192.168.10.3:80; fair; }
其他參數(shù):
動靜分離
Nginx 動靜分離簡單來說就是把動態(tài)請求跟靜態(tài)請求分開,Nginx 處理靜態(tài)請求,Tomcat處理動態(tài)請求。
動靜分離從目前實現(xiàn)角度來講大致分為兩種:
- 一種是純粹把靜態(tài)文件獨立成單獨的域名,放在獨立的服務器上,也是目前主流推崇的方案;
- 另外一種方法就是動態(tài)跟靜態(tài)文件混合在一起發(fā)布,通過
- nginx 來分開。 通過 location 指定不同的后綴名實現(xiàn)不同的請求轉(zhuǎn)發(fā)。
將a.jpg放到tom文件夾下:
通過反向代理訪問http://192.168.242.66/tom/a.jpg
=>http://192.168.242.66:8080/tom/a.jpg
Nginx.conf配置詳解
Nginx配置文件(conf/nginx.conf)整體分為三個部分:
全局塊:和Nginx運行相關的全局配置
events塊:和網(wǎng)絡連接相關的配置
http塊:代理、緩存、日志記錄、虛擬主機配置
- http全局塊
- Server塊
servler全局塊
location塊
#安全問題,建議用nobody,不要用root. #user nobody; #worker數(shù)和服務器的cpu數(shù)相等是最為適宜 worker_processes 2; #work綁定cpu(4 work綁定4cpu) worker_cpu_affinity 0001 0010 0100 1000 #error_log path(存放路徑) level(日志等級) path表示日志路徑,level表示日志等級, #具體如下:[ debug | info | notice | warn | error | crit ] #從左至右,日志詳細程度逐級遞減,即debug最詳細,crit最少,默認為crit。 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; #這個值是表示nginx要支持哪種多路io復用。 #一般的Linux選擇epoll, 如果是(*BSD)系列的Linux使用kquene。 #windows版本的nginx不支持多路IO復用,這個值不用配。 use epoll; # 當一個worker搶占到一個鏈接時,是否盡可能的讓其獲得更多的連接,默認是off 。 multi_accept on; //并發(fā)量大時緩解客戶端等待時間。 # 默認是on ,開啟nginx的搶占鎖機制。 accept_mutex on; //master指派worker搶占鎖 } http { #當web服務器收到靜態(tài)的資源文件請求時,依據(jù)請求文件的后綴名在服務器的MIME配置文件中找到對應的MIME Type,再根據(jù)MIME Type設置HTTP Response的Content-Type,然后瀏覽器根據(jù)Content-Type的值處理文件。 include mime.types; #/usr/local/nginx/conf/mime.types #如果 不能從mime.types找到映射的話,用以下作為默認值-二進制 default_type application/octet-stream; #日志位置 access_log logs/host.access.log main; #一條典型的accesslog: #101.226.166.254 - - [21/Oct/2013:20:34:28 +0800] "GET /movie_cat.php?year=2013 HTTP/1.1" 200 5209 "http://www.baidu.com" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDR; .NET4.0C; .NET4.0E; .NET CLR 1.1.4322; Tablet PC 2.0); 360Spider" #1)101.226.166.254:(用戶IP) #2)[21/Oct/2013:20:34:28 +0800]:(訪問時間) #3)GET:http請求方式,有GET和POST兩種 #4)/movie_cat.php?year=2013:當前訪問的網(wǎng)頁是動態(tài)網(wǎng)頁,movie_cat.php即請求的后臺接口,year=2013為具體接口的參數(shù) #5)200:服務狀態(tài),200表示正常,常見的還有,301永久重定向、4XX表示請求出錯、5XX服務器內(nèi)部錯誤 #6)5209:傳送字節(jié)數(shù)為5209,單位為byte #7)"http://www.baidu.com":refer:即當前頁面的上一個網(wǎng)頁 #8)"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; #.NET CLR 3.0.30729; Media Center PC 6.0; MDDR; .NET4.0C; .NET4.0E; .NET CLR 1.1.4322; Tablet PC 2.0); 360Spider": agent字段:通常用來記錄操作系統(tǒng)、瀏覽器版本、瀏覽器內(nèi)核等信息 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #開啟從磁盤直接到網(wǎng)絡的文件傳輸,適用于有大文件上傳下載的情況,提高IO效率。 sendfile on; //大文件傳遞優(yōu)化,提高效率 #一個請求完成之后還要保持連接多久,0表示完成請求后直接關閉連接。默認:75s keepalive_timeout 60s; #開啟或者關閉gzip模塊, 文件壓縮,再傳輸,提高效率 #gzip on ; #設置允許壓縮的頁面最小字節(jié)數(shù),頁面字節(jié)數(shù)從header頭中的Content-Length中進行獲取。 #gzip_min_lenth 1k; # gzip壓縮比,1 壓縮比最小處理速度最快,9 壓縮比最大但處理最慢(傳輸快但比較消耗cpu) #gzip_comp_level 4; #匹配MIME類型進行壓縮,(無論是否指定)"text/html"類型總是會被壓縮的。 #gzip_types types text/plain text/css application/json application/x-javascript text/xml #動靜分離 #服務器端靜態(tài)資源緩存,最大緩存到內(nèi)存中的文件,不活躍期限 open_file_cache max=655350 inactive=20s; #活躍期限內(nèi)最少使用的次數(shù),否則視為不活躍。 open_file_cache_min_uses 2; #驗證緩存是否活躍的時間間隔 open_file_cache_valid 30s; upstream myserver{ # ip_hash; server 192.168.161.132:8080 weight=1; server 192.168.161.132:8081 weight=1 backup; #hash $request_uri #hash_method crc32 } server { #監(jiān)聽端口號 listen 80; #服務名 server_name 192.168.137.129; #字符集 #charset utf-8; location / { #匹配任何查詢。 root html;#資源查找位置。 /user/local/nginx/html #默認訪問首頁索引文件的名稱 index index.html index.htm; #反向代理路徑 proxy_pass http://myserver; #反向代理的超時時間 proxy_connect_timeout 10; proxy_redirect default; } #普通匹配 location /images/ { root images ; } #反正則匹配 location ^~ /images/jpg/ { # 匹配任何以 /images/jpg/ 開頭的任何查詢并且停止搜索。任何正則表達式將不會被測試。 root images/jpg/ ; } #正則匹配 location ~*.(gif|jpg|jpeg)$ { #所有靜態(tài)文件直接讀取硬盤 root pic ; #expires定義用戶瀏覽器緩存的時間為3天,如果靜態(tài)頁面不常更新,可以設置更長,這樣可以節(jié)省帶寬和緩解服務器的壓力 expires 3d; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
到此這篇關于Nginx安裝以及具體應用的文章就介紹到這了,更多相關Nginx安裝使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
nginx+tomcat實現(xiàn)負載均衡,使用redis session共享
這篇文章主要介紹了nginx tomcat負載均衡 使用redis session共享,有興趣的同學可以了解一下。2016-12-12nginx配置訪問圖片路徑以及html靜態(tài)頁面的調(diào)取方法
這篇文章主要介紹了詳解nginx配置訪問圖片路徑以及html靜態(tài)頁面的調(diào)取方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。2016-12-12Nginx實現(xiàn)動態(tài)攔截非法訪問ip的方法
最近在訪問時不時會被暴力刷量,爬蟲和惡意攻擊導致數(shù)據(jù)庫,服務等癱瘓,所以本文介紹了在Nginx上實現(xiàn)一個動態(tài)攔截IP的方法,具體是當某個IP在1分鐘內(nèi)訪問超過60次時,將其加入Redis并攔截,攔截時間默認1天,需要的朋友可以參考下2025-02-02nginx實現(xiàn)數(shù)據(jù)庫端口轉(zhuǎn)發(fā)
本文主要介紹了nginx實現(xiàn)數(shù)據(jù)庫端口轉(zhuǎn)發(fā),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-03-03