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 (系統用不可公開)
沒有留言:
張貼留言