您好,登錄后才能下訂單哦!
首先,直接上干貨:
user root;
worker_processes 4;
error_log /var/log/nginx/error.log;
#pid logs/nginx.pid;
events {
use epoll;
worker_connections 65536;
accept_mutex on;
multi_accept on;
}
http {
include mime.types;
default_type application/octet-stream;
limit_conn_zone $binary_remote_addr zone=addr:20m;
#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;
sendfile on;
sendfile_max_chunk 100k;
tcp_nopush on;
keepalive_timeout 30;
client_header_buffer_size 128k;
large_client_header_buffers 4 128k;
client_max_body_size 30m;
client_body_buffer_size 128k;
underscores_in_headers on;
server_name_in_redirect off;
gzip on;
#fastcgi_intercept_errors on;
#error_page 403 404 500 502 504 = https://test.xyh-health.cn/nginx/err/;
include /etc/nginx/conf.d/*.conf;
upstream gateway {
server 127.0.0.1:8308;
}
server {
listen 80;
keepalive_requests 120;
server_name 127.0.0.1;
location / {
root /opt/html/;
}
}
server {
listen 443 ssl http2 default_server;
server_name test.xyh-health.cn test.xyh.tk;
add_header X-Frame-Options "SAMEORIGIN";
# proxy_intercept_errors on;
charset utf-8;
location ^~ /yx/ {
root /opt/html/;
}
location /hys-cms/ {
proxy_pass http://localhost:8082/hys-cms/;
}
location / {
proxy_pass http://gateway/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# limit_conn addr 30;
fastcgi_intercept_errors on;
error_page 404 /opt/html/nginx/err/error.html;
}
ssl_certificate /etc/letsencrypt/live//fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live//privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
}
然后,咱們挨個(gè)看這幾個(gè)模塊:
核心模塊
user root:配置用戶或者用戶組。
worker_processes 4;:用來(lái)設(shè)置 Nginx 服務(wù)的進(jìn)程數(shù)。該值推薦使用 CPU 內(nèi)核數(shù)。
pid:指定 nginx 進(jìn)程運(yùn)行文件存放地址。
error_log:錯(cuò)誤日志路徑,級(jí)別。
事件模塊:events{}
use epoll;:事件驅(qū)動(dòng)模型select|poll|kqueue|epoll|resig。epoll 是 Nginx 支持的高性能事件驅(qū)動(dòng)庫(kù)之一。是公認(rèn)的非 常優(yōu)秀的事件驅(qū)動(dòng)模型。它比select模型高效很多。主要表現(xiàn)在:
1,每個(gè)進(jìn)程能夠打開的fd的個(gè)數(shù)是沒(méi)有限制的 2,由于網(wǎng)絡(luò)延遲等原因,任一時(shí)間只有部分的socket是"活躍"的,而select/poll每次調(diào)用都會(huì)線性掃描全部的集合(輪詢方式),導(dǎo)致效率呈現(xiàn)線性下降。但是epoll不存在這個(gè)問(wèn)題,它只會(huì)對(duì)"活躍"的socket進(jìn)行操作---這是因?yàn)樵趦?nèi)核實(shí)現(xiàn)中epoll是根據(jù)每個(gè)fd上面的callback函數(shù)實(shí)現(xiàn)的,如果fd就緒就會(huì)通知進(jìn)程,增加了效率。于是,只有"活躍"的socket才會(huì)主動(dòng)去調(diào)用callback函數(shù),其他idle狀態(tài)的socket則不會(huì)。
worker_rlimit_nofile:設(shè)置毎個(gè)進(jìn)程的最大文件打開數(shù)。如果不設(shè)的話上限就是系統(tǒng)的 ulimit–n 的數(shù)字,一般為65535。
worker_connections 65536;:設(shè)置一個(gè)進(jìn)程理論允許的最大連接數(shù),理論上越大越好,但不可以超過(guò) worker_rlimit_nofile 的值。
accept_mutex:當(dāng)其設(shè)置為開啟的時(shí)候,將會(huì)對(duì)多個(gè) Nginx 進(jìn)程接受連接進(jìn)行序列化,防止多個(gè)進(jìn)程對(duì)連接的爭(zhēng)搶。當(dāng)服務(wù)器連接數(shù)不多時(shí),開啟這個(gè)參數(shù)會(huì)讓負(fù)載有一定程度的降低。但是當(dāng)服務(wù)器的吞吐量很大時(shí),為了效率,請(qǐng)關(guān)閉這個(gè)參數(shù);并且關(guān)閉這個(gè)參數(shù)的時(shí)候也可以讓請(qǐng)求在多個(gè) worker 間的分配更均衡。
multi_accept:設(shè)置一個(gè)進(jìn)程可同時(shí)接受多個(gè)網(wǎng)絡(luò)連接。
http模塊:http{}
include:文件擴(kuò)展名與文件類型映射表。
default_type:默認(rèn)文件類型,默認(rèn)為text/plain。
limit_conn_zone:訪問(wèn)限制模塊。
log_format:日志格式化。
sendfile:Sendfile 是 Linux2.0 以后的推出的一個(gè)系統(tǒng)調(diào)用,它能簡(jiǎn)化網(wǎng)絡(luò)傳輸過(guò)程中的步驟,提高服務(wù)器性能。
sendfile_max_chunk:每個(gè)進(jìn)程每次調(diào)用傳輸數(shù)量不能大于設(shè)定的值,默認(rèn)為0,即不設(shè)上限。
tcp_nopush:設(shè)置數(shù)據(jù)包會(huì)累積一下再一起傳輸,可以提高一些傳輸效率。 tcp_nopush 必須和 sendfile 搭配使用。
**tcp_nodelay :小的數(shù)據(jù)包不等待直接傳輸。默認(rèn)為on??瓷先ナ呛?tcp_nopush 相反的功能,但是兩邊都為 on 時(shí) nginx 也可以平衡這兩個(gè)功能的使用。
keepalive_timeout:HTTP 連接的持續(xù)時(shí)間。
client_header_buffer_size:客戶端請(qǐng)求頭部的緩沖區(qū)大小,這個(gè)可以根據(jù)你的系統(tǒng)分頁(yè)大小來(lái)設(shè)置,一般一個(gè)請(qǐng)求的頭部大小不會(huì)超過(guò)1k,不過(guò)由于一般系統(tǒng)分頁(yè)都要大于1k,所以這里設(shè)置為分頁(yè)大小。分頁(yè)大小可以用命令getconf PAGESIZE取得。
large_client_header_buffers:設(shè)置客戶端請(qǐng)求的Header頭緩沖區(qū)大小,默認(rèn)為4K??蛻舳苏?qǐng)求行不能超過(guò)設(shè)置的第一個(gè)數(shù),請(qǐng)求的Header頭信息不能大于設(shè)置的第二個(gè)數(shù),否則會(huì)報(bào)"Request URI too large"(414)或“Bad request”(400)錯(cuò)誤。如果客戶端的Cookie信息較大,則需增加緩沖區(qū)大小
client_max_body_size:設(shè)置客戶端請(qǐng)求的Header頭緩沖區(qū)大小,默認(rèn)為4K??蛻舳苏?qǐng)求行不能超過(guò)設(shè)置的第一個(gè)數(shù),請(qǐng)求的Header頭信息不能大于設(shè)置的第二個(gè)數(shù),否則會(huì)報(bào)"Request URI too large"(414)或“Bad request”(400)錯(cuò)誤。如果客戶端的Cookie信息較大,則需增加緩沖區(qū)大小。
client_body_buffer_size:設(shè)定了request body的緩沖大小。
underscores_in_headers:果header name中包含下劃線,則忽略掉。默認(rèn)off。
server_name_in_redirect:如果server_name_in_redirect為off時(shí),那么將會(huì)以當(dāng)前服務(wù)器的IP地址進(jìn)行拼接URL;如果該命令為on,那么首先查找server_name,如果沒(méi)有找到,查找請(qǐng)求頭的HOST字段,如果沒(méi)有,則以當(dāng)前服務(wù)器的IP進(jìn)行拼接。
gzip:開啟gzip壓縮功能,對(duì)用戶請(qǐng)求的頁(yè)面進(jìn)行壓縮處理,以達(dá)到節(jié)省網(wǎng)絡(luò)帶寬,提高網(wǎng)站速度的作用。
include:包含配置文件,并且支持文件名的匹配。
upstream:負(fù)載均衡配置。
server
listen:監(jiān)聽端口。
keepalive_requests **:?jiǎn)芜B接請(qǐng)求上限次數(shù)。
server_name:監(jiān)聽地址 。
接著,還剩下location的匹配規(guī)則,下次再來(lái)個(gè)詳細(xì)的說(shuō)明吧~
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。