Nginx 常用設定
設定檔: /etc/nginx/proxy_params
此設定檔為 Nginx 安裝後自動產生的, 是作 proxy 設定時常用到的一些參數, 目前只 include 使用, 不修改。檔案內容如下
proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme;
設定檔: /etc/nginx/sites-available/default
Nginx 大部份的設定, 尤其是與 reverse proxy 相關的都在此檔案, 以下為一段與 WordPress、 HTTPS 和 proxy cache 相關的設定範例:
# Proxy cache 前置設定 # cache 目錄, cache temp 目錄, 1字元+2字元雙層目錄, cache 名稱及分配記憶體, 效期, 空間 proxy_cache_path /var/www/cache levels=1:2 keys_zone=mycache:10m inactive=1d max_size=1g; proxy_temp_path /var/www/cache/tmp; server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; # 允許 HTTPS 連線 listen 443 ssl; ssl_certificate /etc/nginx/rex_ssl_key/cacert.pem; ssl_certificate_key /etc/nginx/rex_ssl_key/privkey.pem; # 設定網站根目錄並加入 index.php 為主要的 index root /var/www/html; index index.php index.html index.htm; # 設定 Server Name 為 localhost, 因為沒有 domain name 又 IP 可能會變動 server_name localhost; # Nginx 的預設 location 規則 location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } # 所有 .php request 直接重新導向給 Apache 處理 location ~ .php$ { proxy_pass http://localhost:8080; include proxy_params; } # 靜態資料 cache 設定 location ~* .(js|css|jpg|jpeg|gif|png|ico|cur|svg)$ { proxy_pass http://localhost:8080; include proxy_params; proxy_cache mycache; proxy_cache_key $host$uri$is_args&args; proxy_cache_valid 200 304 10m; expires 30d; } # WordPress 的控制台程序目錄 wp-admin 若是直接丟給 Apache 處理變 wp-admin/ # 會硬要在 URL 上加上 Apache 的 8080 port, 這樣會讓 WordPress 主程序認為 # 和站台設定不一致而重導回主頁不予理會。 # 所以解決方法就直接在 Nginx 這端將他 rewrite 成 wp-admin/ location ~ ^(/wp[^/]*(?:/[^/]*)?/wp-admin)$ { rewrite (.*) $1/; } # WordPress 主頁根目錄(首頁文章列表、索引到的文章) 或根目錄之下(偽靜態固定網址、 # 網誌網路子站) 的 request 因為要透過 WordPress 的 php 程序取得實際網址, # 所以直接導向給 Apache 處理 location ~ (^/wp[^/]*/$|^/wp[^/]*/){ proxy_pass http://localhost:8080; include proxy_params; }
其他:
因為 HTTPS 的協定在 LNAMP 的架構下我們是交給 Nginx 處理, 所以習慣在 /etc/nginx 的目錄下另建一個子目錄來存放 certificate key (公用可公開) 和 private key (系統用不可公開)
沒有留言:
張貼留言