<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
1、設定worker程序的使用者,指的linux中的使用者,會涉及到nginx操作目錄或檔案的一些許可權,預設為 nobodyuser root;
2、worker程序工作數設定,一般來說CPU有幾個,就設定幾個,或者設定為N-1也行。worker_processes 1;
3、nginx紀錄檔級別 debug |info |notice |warn | error | crit 丨 alert | emerg
,錯誤級別從左到右越來越大
#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;
4、設定nginx程序 pid
pid logs/nginx.pid;
5、設定工作模式
events { # 預設使用epolL use epoll; # 每個worker允許連線的使用者端最大連線數 worker_connections 1024; }
6、http 是指令塊,針對http網路傳輸的一些指令設定
http { }
7、include引入外部設定,提高可讀性,避免單個組態檔過大
include mime.types;
8、設定紀錄檔格式, main 為定義的格式名稱,如此 access_log就可以直接使用這個變數了
#log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main;
引數名 | 引數意義 |
---|---|
$remote_addr | 使用者端ip |
$remote_user | 遠端使用者端使用者名稱,一般為:‘-’ |
$time_local | 時間和時區 |
$request | 請求的url以及method |
$status | 響應的狀態碼 |
$body_bytes_sent | 響應使用者端內容位元組數 |
$http_referer | 記錄使用者從哪個連結跳過來 |
$http_user_agent | 使用者所使用的代理,一般來時都是瀏覽器 |
$http_x_forwarded_for | 通過代理伺服器來記錄使用者端的ip |
9、sendfile 使用高效檔案傳輸,提升傳輸效能。啟用後才能使用 tcp_nopush,是指當資料表累積一定大小後才傳送,提高了效率。
sendfile on; tcp_nopush on;
10、keepalive_timeout設定使用者端與伺服器端請求的超時時間,保證使用者端多次請求的時候不會重複建立新的連線,節約資源損耗。
#keepalive_timeout 0; keepalive_timeout 65;
11、gzip 啟用壓縮,html/js/css壓縮後傳輸會更快
#gzip on;
12、server 可以在 http指令塊中設定多個虛擬主機
server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } #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; } }
手動切割
現有的紀錄檔都會存在 access.log 檔案中,但是隨著時間的推移,這個檔案的內容會越來越多,體積會越來越大,不便於運維人員,檢視,所以我們可以通過把這個大的紀錄檔檔案切割為多份不同的小檔案作為紀錄檔,切割規則可以以天 為單位,如果每天有幾百G或者幾個T的紀錄檔的話,則可以按需以每半天 或者 每小時 對紀錄檔切割一下。
具體步驟如下∶
1、到nginx的sbin目錄,建立一個shell可執行檔案∶ cut_my_log.sh,內容為∶
#!/bin/ bash L0G_PATH="/var/log/nginx" RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d+%H:%M) PID=/var/run/nginx/nginx.pid mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log #向Nginx主程序傳送訊號,用於重新開啟紀錄檔檔案 kill -USR1 `cat $PID`
2、為 cut_my_log.sh 新增可執行的許可權∶
chmod +x cut_my_log.sh
測試紀錄檔切割後的結果∶
./cut_my_Log.sh
定時切割:使用定時任務
1、安裝定時任務∶
yum install crontabs
2、crontab -e 編輯並且新增一行新的任務∶
*/1 * * * * /usr/local/nginx/sbin/cut_my_log.sh
3、重啟定時任務∶
service crond restart
● 附∶常用定時任務命令∶
service crond start //啟動服務 service crond stop //關閉服務 service crond restart //重啟服務 service crond reload //重新載入設定 crontab -e //編輯任務 crontab -l //檢視任務列表
定時任務表示式∶
Cron表示式分為5或6個域,每個域代表一個含義,如下所示∶
取值範圍 | 分 | 時 | 日 | 月 | 星期幾 | 年(可選) |
---|---|---|---|---|---|---|
取值範圍 | 0-59 | 0-23 | 1-31 | 1-12 | 1-7 | 2020/2021/2022/... |
常用表示式∶
*/1 * * * *
59 23 * * *
0 1 * * *
假如伺服器路徑為∶/home/imooc/files/img/face.png
設定的時候為∶
location /imooc { root /home }
使用者存取的時候請求為∶url:port/imooc/files/img/face.png
設定的時候為∶
location /hello { alias /home/imooc }
使用者存取的時候請求為∶url:port/hello/files/img/face.png,如此相當於為目錄 imooc做一個自定義的別名。
# 開啟gzip壓縮功能,目的∶提高傳輸效率,節約頻寬 gzip on; # 限制最小壓縮,小於1位元組檔案不會壓縮 gzip_min_length 1; # 定義壓縮的級別(壓縮比,檔案越大,壓縮越多,但是cpu使用會越多) gzip_comp_level 3; # 定義壓縮檔案的型別 gzip_types text/plain application/javascript application/x-javascript text/css applicatio n/xmL text/javascript application/x-httpd-php image/jpeg image/gif image/png application/jison;
空格∶預設匹配,普通匹配
location / { root /home }
=∶精確匹配。
location = /imooc/img/face1.png { root /home; }
~*∶匹配正規表示式,不區分大小寫
# 符合圖片的顯示 location ~* .(GIF|jpg|png|jpeg){ root /home; }
~∶匹配正規表示式,區分大小寫
# GIF必須大寫才能匹配到 location ~ .(GIF|jpg|png|jpeg){ root /home; }
^~∶以某個字元路徑開頭
location ^~ /imooc/img { root /home; }
下載SwitchHosts工具新增設定:192.168.170.129 www.baidu.com,或者找到本機的hosts檔案,新增這行設定,本地域名就模擬好了,如下:
#允許跨域請求的域,*代表所有 add_header 'Access-Control-Allow-Origin' *; #允許帶上cookie請求 add_header 'Access-Control-Allow-Credentials' 'true'; #允許請求的方法,比如 GET/POST/PUT/DELETE add_header 'Access-Control-Allow-Methods' *; #允許請求的header add_header 'Access-Control-Allow-Headers' *;
為了 保證自己網站的靜態資源不能被其它網站參照,我們可以在nginx中做如下設定:
#對源站點驗證 valid_referers *.imooc.com; #非法引入會進入下方判斷 if ($invalid_referer) { return 404; }
OSI 網路模型
在講到Nginx負載均衡的時候,其實Nginx是七層負載均衡,後續我們還會涉及到LVS,是四層負載均衡,七層和四層是什麼概念呢?這就必須提到網路模型。網路模型是計算機網路基礎的一部分內容,一般大學計算機系都會講到此知識點,並且會作為考點;其實在面試過程中有時候也會被問到。所以我們還是有必要來複習或學習一下這塊的一些重要知識的。
網路模型就是 OSI(0pen System Interconnect),意思為 開放網路互聯 ,是由國際標準化組織(ISO)和國際電報電話諮詢委員會(CCITT)共同出版的,他是一種網路互聯模型,也是一種規範。
網路模型分為七層,也就是當用戶發起請求到伺服器接收,會歷經七道工序,或者說使用者利用網際網路傳送訊息給另一個使用者,也會歷經七道工序。這七層可以分為如下∶
層級 | 名稱 | 說明 |
---|---|---|
第七層 | 應用層 | 與使用者行為互動 |
第六層 | 表示層 | 定義資料格式以及資料加密 |
第五層 | 對談層 | 建立、管理以及銷燬對談 |
第四層 | 傳輸層 | 建立、管理請求端到響應端(端到端)的連線 |
第三層 | 網路層 | 請求端的IP地址 |
第二層 | 資料鏈路層 | 提供媒介存取與鏈路管理 |
第一層 | 物理層 | 傳輸媒介,物理媒介 |
以上七層每層可以與上下相鄰層進行通訊。每一層都是非常複雜的,我們不在這裡深究,我們以舉例的形式來闡述每一層是幹嘛的。
負載均衡策略:
輪詢:輪詢是Nginx負載均衡的預設策略。使用場景:針對每個伺服器硬體設定一樣。
加權輪詢(weight):根據設定的權重值去分配處理請求的數量。使用場景:伺服器硬體設定有差異,讓好的伺服器去處理更多的請求。
ip_hash:對請求使用者的IP地址進行hash運算後得到的值,再對伺服器數量進行取模運算。讓同一使用者的請求落到固定的伺服器上。這樣就可以保證使用者存取可以請求到上游服務中的固定的伺服器,前提是使用者ip沒有發生更改。使用ip hash的注意點∶不能把後臺伺服器直接移除,只能標記 down .
upstream tomcats { ip_hash; server 192.168.1.173:8080; server 192.168.1.174:8080 down; server 192.168.1.175:8080; }
一致性雜湊演演算法:讓每臺伺服器IP的hash值落在雜湊環節點上,在使用者請求到Nginx時,根據順時針就近原則落到最近的伺服器節點。
url_hash:根據每次請求的url地址,hash後存取到固定的伺服器節點。
upstream tomcats { # url hash hash $request_uri; # 最少連線數 # least_Conn server 192.168.1.173:8080; server 192.168.1.174:8080; server 192.168.1.175:8080; } server { listen 80; server_name www.tomcats.Com; location / { proxy_pass http://tomcats; } }
max_conns:限制每臺server的連線數,用於保護避免過載,可起到限流作用。測試參考設定如下∶
# worker程序設定1個,便於測試觀察成功的連線數 worker_processes 1; upstream tomcats { server 192.168.1.173:8080 max_conns=2; server 192.168.1.174:8080 max_conns=2; server 192.168.1.175:8080 max_conns=2; }
slow_start:商業版,需要付費。設定參考如下:
upstream tomcats { server 192.168.1.173:8080 weight=6 slow_start=60 server 192.168.1.174:8080 weight=2; server 192.168.1.175:8080 weight=2; }
down、backup
down 用於標記服務節點不可用∶
upstream tomcats { server 192.168.1.173:8080 down; server 192.168.1.174:8080 weight=1; server 192.168.1.175:8080 weight=1; }
表示當前伺服器節點是備用機,只有在其他的伺服器都宕機以後,自己才會加入到叢集中,被使用者存取到
upstream tomcats { server 192.168.1.173:8080 backup; server 192.168.1.174:8080 weight=1; server 192.168.1.175:8080 weight=1; }
注意:backup引數不能使用在 hash 和 random Load balancing 中。
max_fails、fail_timeout
max_fails=2 fail_timeout=15s
則代表在15秒內請求某一server失敗達到2次後,則認為該server已經掛了或者宕機了,隨後再過15秒,這15秒內不會有新的請求到達剛剛掛掉的節點上,而是會請求到正常運作的server,15秒後會再有新請求嘗試連線掛掉的server,如果還是失敗,重複上一過程,直到恢復。
keepalived
∶ 設定長連線處理的數量
proxy_http_version
∶設定長連線http版本為1.1
proxy_set_header
∶清除connection header資訊
upstream tomcats { #server 192.168.1.173:8080 max_fails=2 failtimeout=1s; server 192.168.1.190:8080; #server 192.168.1.174:8080 weight=1; server 192.168.1.175:8080 weight=1;keepalive 32 } server { listen 80; server_name: www.tomcats.com; location / { proxy_pass http://tomcats; proxy_http_version 1.1; proxy_set_header Connection ""; } }
瀏覽器快取:加速使用者存取,提升單個使用者(瀏覽器存取者)體驗,快取在本地
Nginx快取:
控制瀏覽器快取
location /files { alias /home/imooc; # expires 10s; # expires @22h30m; # expires -1h; # expires epoch; # expires off; expires max; }
# proxy_cache_path 設定快取目錄# # keys_zone 設定共用記憶體以及佔用空間大小 # max_size 設定快取大小 # inactive 超過此時間則被清理 # use_temp_path 臨時目錄,使用後會影響nginx效能 proxy_cache_path /usr/local/nginx/upstream_cache keys_zone=mycache:5m max_size=1g inactive=1m use_temp_path=off;
location / { proxy_pass http://tomcats; # 啟用快取,和keyS_zone一致 proxy_cache mycache; # 針對200和304狀態碼快取時間為8小時 proxy_cache_valid 200 304 8h;
安裝SSL模組:要在nginx中設定https,就必須安裝ssl模組,也就是∶http_ssl_module
。
1、進入到nginx的解壓目錄∶ /home/software/nginx-1.16.1
2、新增ssl模組(原來的那些模組需要保留)
./configure --prefix=/usr/local/nginx --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --error-log-path=/var/Log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_gzip_static_module --http-client-body-temp-path=/var/temp/nginx/client --http-proxy-temp-path=/var/temp/nginx/proxy --http-fastcgi-temp-path=/var/temp/nginx/fastcgi --http-uwsgi-temp-path=/var/temp/nginx/uwsgi --http-scgi-temp-path=/var/temp/nginx/scgi --with-http_ssl_module
3、編譯和安裝
make make install
設定HTTPS
1、把ssl證書 *.crt
和私鑰*.key
拷貝到/usr/local/nginx/conf
目錄中。
2、新增 server 監聽 443埠∶
server { listen 443; server_name www.imoocdsp.com; # 開啟ssl ssl on; # 設定ssl證書 ssl_certificate 1_www.imoocdsp.com_bundle # 設定證書祕鑰 ssl_certificate_key 2_www.imoocdsp.com.key; # ssl對談 ssl_session_cache shared:SSL:1m # ssl對談超時時間 ssl_session_timeout 5m; # 設定加密套件,寫法遵循 openssl 標準 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:! ssl_prefer_server_ciphers on; location / { proxy_pass http://tomcats/; index index.html index.htm; } }
3、reload nginx:./nginx -s reload
到此這篇關於Nginx的一些常用設定彙總的文章就介紹到這了,更多相關Nginx常用設定內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45