1. /etc/nginx/nginx.conf的常用配置及說明
# 指定Nginx Worker進程運行用戶, 語法: user user [group]
user nginx;
# worker進程數, 通常設置成和CPU的數量相等, 默認爲1.
worker_processes 1;
# 指定進程id存儲文件
pid /run/nginx.pid;
# 事件模塊
events {
# 每個worker進程的連接數, 通過worker_connections和worker_proceses可以計算出maxclients:
# max_clients = worker_processes * worker_connections, 作爲反向代理時, max_clients爲:
# max_clients = worker_processes * worker_connections/4
worker_connections 768;
# 若開啓此配置, 則Nginx會在接到一個新的連接通知之後, 儘可能多地去接受, 默認爲: off
multi_accept off;
}
# http核心模塊
http {
##
# 基本設置
##
# 是否啓動高效傳輸文件模式, sendfile可以讓Nginx在傳輸文件時直接在磁盤和tcp socket之間傳輸數據.
# 如果這個參數不開啓, 會先在用戶空間(Nginx進程空間)申請一個buffer, 用read函數把數據從磁盤讀到cache,
# 再從cache讀取到用戶空間的buffer, 再用write函數把數據從用戶空間的buffer寫入到內核的buffer,
# 最後到tcp socket. 開啓這個參數後可以讓數據不用經過用戶buffer, 默認off.
sendfile on;
# 必須在sendfile開啓模式纔有效, 告訴Nginx在一個數據包裏發送所有頭文件, 而不一個接一個的發送, 默認off.
tcp_nopush on;
# 告訴Nginx不要緩存數據, 而是一段一段的發送, 當需要及時發送數據時, 就應該開啓這個功能,
# 這樣發送一小塊數據信息時就能夠立即得到返回值, 默認on.
tcp_nodelay on;
# 給客戶端分配keep-alive鏈接超時時間, 服務器將在這個超時時間過後關閉鏈接.
# 我們將它設置低些可以讓Ngnix持續工作的時間更長.
keepalive_timeout 65;
# 影響散列表的衝突率, types_hash_max_size越大, 就會消耗更多的內存, 但散列key的衝突率會降低,
# 檢索速度就更快. types_hash_max_size越小, 消耗的內存就越小, 但散列key的衝突率可能上升.
types_hash_max_size 2048;
# 是否顯示版本號, 若不顯示, 瀏覽器訪問時抓包, 查看HTTP響應的Server頭沒有版本號, 默認on
server_tokens on;
# 保存服務器名字的hash表是由指令server_names_hash_max_size和server_names_hash_bucket_size所控制,
# 若Nginx給出需要增大hash max size或hash bucket size的提示, 那麼首要的是增大前一個參數的大小.
# server_names_hash_max_size 512;
# server_names_hash_bucket_size 64;
# 若爲off, 則始終按照默認的80端口, 若爲on, 則返回當前正在監聽的端口, 默認on.
port_in_redirect on;
# 若爲off, 則會以當前服務器的IP地址進行拼接URL. 若爲on, 則會首先查找server_name,
# 若沒有找到, 則會查找請求頭的HOST字段, 若還是沒有, 則以當前服務器的IP進行拼接, 默認on.
server_name_in_redirect on;
# 設定MIME類型, 類型由mime.type文件定義.
include /etc/nginx/mime.types;
# 設定默認的MIME類型, 默認: text/plain.
default_type application/octet-stream;
# 設置上傳文件大小最大爲1000m, 超過會報413錯誤
client_max_body_size 1000m;
##
# SSL協議設置
##
# 用於指定支持的加密協議.
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
# 設置協商加密算法時, 優先使用服務端的加密套件, 而不是客戶端瀏覽器的加密套件, 默認off.
ssl_prefer_server_ciphers off;
##
# 日誌設置
##
# 每一個訪問請求的記錄位置
access_log /var/log/nginx/access.log;
# Nginx錯誤信息的記錄位置
error_log /var/log/nginx/error.log;
##
# Gzip壓縮設置
##
# 是否啓動Gzip
gzip on;
# IE6的某些版本對gzip的壓縮支持很不好, 會造成頁面的假死,
# 對img進行Gzip後造成IE6的假死, 把對img的Gzip壓縮去掉後就正常了.
gzip_disable "msie6";
# 和HTTP頭有關係, 加個vary頭, 給代理服務器用的, 有的瀏覽器支持壓縮, 有的不支持,
# 爲了避免浪費不支持的也壓縮, 根據客戶端的HTTP頭來判斷, 是否需要壓縮.
gzip_vary on;
# Nginx作爲反向代理的時候該參數起作用, 根據某些請求和應答來決定是否在對代理請求的應答啓用Gzip壓縮,
# 是否壓縮取決於請求頭中的"Via"字段, 指令中可以同時指定多個不同的參數, 可選值值爲:
# off - 關閉所有的代理結果數據的壓縮
# expired - 啓用壓縮,如果header頭中包含 "Expires" 頭信息
# no-cache - 啓用壓縮,如果header頭中包含 "Cache-Control:no-cache" 頭信息
# no-store - 啓用壓縮,如果header頭中包含 "Cache-Control:no-store" 頭信息
# private - 啓用壓縮,如果header頭中包含 "Cache-Control:private" 頭信息
# no_last_modified - 啓用壓縮,如果header頭中不包含 "Last-Modified" 頭信息
# no_etag - 啓用壓縮 ,如果header頭中不包含 "ETag" 頭信息
# auth - 啓用壓縮 , 如果header頭中包含 "Authorization" 頭信息
# any - 無條件啓用壓
# 默認爲off.
gzip_proxied off;
# Gzip壓縮比, 值爲1~9, 1的壓縮比最小處理速度最快, 9的壓縮比最大但處理最慢(傳輸快但比較消耗CPU)
gzip_comp_level 6;
# 設置允許壓縮的頁面最小字節數, 默認值是0, 不管頁面多大都壓縮, 建議設置大於1k(即1024), 小於1k可能會越壓越大.
gzip_min_length 1024;
# 設置系統獲取幾個單位的緩存用於存儲Gzip的壓縮結果數據流, 4 8k代表: 按照原始數據大小以8k爲單位的4倍申請內存.
gzip_buffers 4 8k;
# 匹配MIME類型進行壓縮
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
# 識別HTTP的協議版本, 99.99%的瀏覽器都支持1.1, 所以可以不用設這個值, 保持系統默認即可, 默認1.1.
gzip_http_version 1.1;
##
# 虛擬主機設置
##
# Nginx的配置很靈活, 支持include配置文件, 如果我們的域名都配置到nginx.conf, 那麼這個文件就會比較亂,
# 也影響管理和閱讀, 所以直接拆分出來, 分成不同的配置文件.
include /etc/nginx/conf.d/*.conf;
# 加載一個外部的配置文件, sites-enabled文件夾下只有一個default文件,
# 這個外部的配置文件就是負責我們Nginx的默認代理, 也就是server塊的配置.
include /etc/nginx/sites-enabled/*;
##
# 緩存設置
##
# 緩存文件路徑
# levels=1:2 設置目錄深度, 第一層目錄是1個字符, 第2層是2個字符.
# keys_zone 設置web緩存名稱和內存緩存空間大小.
# inactive 自動清除緩存文件時間.
# max_size 硬盤空間最大可使用值, 如果緩存空間滿, 默認覆蓋掉緩存時間最長的資源.
proxy_cache_path /data/proxy/cache levels=1:2 keys_zone=cache_one:500m inactive=7d max_size=10g;
# 指定臨時緩存文件的存儲路徑(路徑需和上面路徑在同一分區)
proxy_temp_path /data/proxy/temp;
}
# 配置郵件服務器
#mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # 指定Nginx提供郵件服務時, 用於HTTP認證的服務地址
# # auth_http localhost/auth.php;
# # 指定現有客戶端上的POP3協議的擴展
# # pop3_capabilities "TOP" "USER";
# # 指定現有客戶端上的IMAP協議的擴展
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# # 指定郵件服務器監聽的IP地址和端口.
# listen localhost:110;
# # 指定虛擬機支持的加密協議.
# protocol pop3;
# # 是否開啓郵件代理
# proxy on;
# }
#
# server {
# # 指定郵件服務器監聽的IP地址和端口.
# listen localhost:143;
# # 指定虛擬機支持的加密協議.
# protocol imap;
# # 是否開啓郵件代理
# proxy on;
# }
#}
/etc/nginx/sites-enabled/default的常用配置及說明
server {
# Nginx監聽的IP及端口號, 可以監聽多個
listen 127.0.0.1:80;
# Nginx監聽的IPv6的IP及端口號
listen [::]:80;
# SSL協議配置
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
# 加載配置片段
# include snippets/snakeoil.conf;
# 指定哪個目錄作爲根目錄, 用於文件的檢索
root /var/www/html;
# 在上面指定的根目錄下, 找到如下頁面, 作爲Nginx的默認主頁
index index.html index.htm index.nginx-debian.html;
# 配置server的多域名, 域名可以通過以下方式:
# 1. 完整的域名, 如: www.example.com
# 2. 帶*號開頭的域名, 如: *.example.com
# 3. 帶*號末尾的域名, 如: mail.*
# 4. 可匹配的正則表達式
server_name www.paulandcode.com;
location / {
# 原請求不存在時, 重定向到指定的URI, 並返回結果(此處設定爲404)
try_files $uri $uri/ =404;
}
# 靜態文件的處理
location ~ ^/(images|javascript|js|css|flash|media|static)/ {
# 設置被代理服務器的地址, 包含傳輸協議, 主機名稱或IP地址加端口號, URI等要素.
proxy_pass http://www.paulandcode.com:8080;
# 自定義http header頭, 用於發送給後端真實服務器.
proxy_set_header Host $host:$server_port;
# 指定哪個目錄作爲根目錄, 用於文件的檢索
root /home/django/projects/blogs;
# 啓用Gzip壓縮
gzip on;
# 對js、css、jpg、png、gif格式的文件啓用gzip壓縮功能
gzip_types application/javascript text/css image/jpeg image/png image/gif;
# 所壓縮文件的最小值,小於這個的不會壓縮
gzip_min_length 1024;
# 使用名爲cache_one的對應緩存配置.
proxy_cache cache_one;
# 對httpcode爲200, 206, 301, 302, 304的緩存10天.
proxy_cache_valid 200 206 301 302 304 10d;
# 定義緩存唯一key, 通過唯一key來進行hash存取.
proxy_cache_key $uri
# 過期30天, 靜態文件不怎麼更新, 過期可以設大一點, 如果頻繁更新, 則可以設置得小一點.
expires 30d;
}
}