少年郎,我這裏有一份nginx配置,你拿走吧

首先,直接上乾貨:html

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

    }

}

而後,我們挨個看這幾個模塊:
核心模塊
user root:配置用戶或者用戶組。
worker_processes 4;:用來設置 Nginx 服務的進程數。該值推薦使用 CPU 內核數。
pid:指定 nginx 進程運行文件存放地址。
error_log:錯誤日誌路徑,級別。
事件模塊:events{}node

use epoll;:事件驅動模型select|poll|kqueue|epoll|resig。epoll 是 Nginx 支持的高性能事件驅動庫之一。是公認的非 常優秀的事件驅動模型。它比select模型高效不少。主要表如今:
1,每一個進程可以打開的fd的個數是沒有限制的 2,因爲網絡延遲等緣由,任一時間只有部分的socket是"活躍"的,而select/poll每次調用都會線性掃描所有的集合(輪詢方式),致使效率呈現線性降低。可是epoll不存在這個問題,它只會對"活躍"的socket進行操做---這是由於在內核實現中epoll是根據每一個fd上面的callback函數實現的,若是fd就緒就會通知進程,增長了效率。因而,只有"活躍"的socket纔會主動去調用callback函數,其餘idle狀態的socket則不會。
worker_rlimit_nofile:設置毎個進程的最大文件打開數。若是不設的話上限就是系統的 ulimit–n 的數字,通常爲65535。
worker_connections 65536;:設置一個進程理論容許的最大鏈接數,理論上越大越好,但不能夠超過 worker_rlimit_nofile 的值。
accept_mutex:當其設置爲開啓的時候,將會對多個 Nginx 進程接受鏈接進行序列化,防止多個進程對鏈接的爭搶。當服務器鏈接數很少時,開啓這個參數會讓負載有必定程度的下降。可是當服務器的吞吐量很大時,爲了效率,請關閉這個參數;而且關閉這個參數的時候也可讓請求在多個 worker 間的分配更均衡。
multi_accept:設置一個進程可同時接受多個網絡鏈接。
http模塊:http{}nginx

include:文件擴展名與文件類型映射表。
default_type:默認文件類型,默認爲text/plain。
limit_conn_zone:訪問限制模塊。
log_format:日誌格式化。
sendfile:Sendfile 是 Linux2.0 之後的推出的一個系統調用,它能簡化網絡傳輸過程當中的步驟,提升服務器性能。
sendfile_max_chunk:每一個進程每次調用傳輸數量不能大於設定的值,默認爲0,即不設上限。
tcp_nopush:設置數據包會累積一下再一塊兒傳輸,能夠提升一些傳輸效率。 tcp_nopush 必須和 sendfile 搭配使用。
**tcp_nodelay :小的數據包不等待直接傳輸。默認爲on。看上去是和 tcp_nopush 相反的功能,可是兩邊都爲 on 時 nginx 也能夠平衡這兩個功能的使用。
keepalive_timeout:HTTP 鏈接的持續時間。
client_header_buffer_size:客戶端請求頭部的緩衝區大小,這個能夠根據你的系統分頁大小來設置,通常一個請求的頭部大小不會超過1k,不過因爲通常系統分頁都要大於1k,因此這裏設置爲分頁大小。分頁大小能夠用命令getconf PAGESIZE取得。
large_client_header_buffers:設置客戶端請求的Header頭緩衝區大小,默認爲4K。客戶端請求行不能超過設置的第一個數,請求的Header頭信息不能大於設置的第二個數,不然會報"Request URI too large"(414)或「Bad request」(400)錯誤。若是客戶端的Cookie信息較大,則需增長緩衝區大小
client_max_body_size:設置客戶端請求的Header頭緩衝區大小,默認爲4K。客戶端請求行不能超過設置的第一個數,請求的Header頭信息不能大於設置的第二個數,不然會報"Request URI too large"(414)或「Bad request」(400)錯誤。若是客戶端的Cookie信息較大,則需增長緩衝區大小。
client_body_buffer_size:設定了request body的緩衝大小。
underscores_in_headers:果header name中包含下劃線,則忽略掉。默認off。
server_name_in_redirect:若是server_name_in_redirect爲off時,那麼將會以當前服務器的IP地址進行拼接URL;若是該命令爲on,那麼首先查找server_name,若是沒有找到,查找請求頭的HOST字段,若是沒有,則以當前服務器的IP進行拼接。
gzip:開啓gzip壓縮功能,對用戶請求的頁面進行壓縮處理,以達到節省網絡帶寬,提升網站速度的做用。
include:包含配置文件,而且支持文件名的匹配。
upstream:負載均衡配置。
server
listen:監聽端口。
keepalive_requests **:單鏈接請求上限次數。
server_name:監聽地址 。
接着,還剩下location的匹配規則,下次再來個詳細的說明吧~服務器

相關文章
相關標籤/搜索