====== nginx 的 rewrite 設定 ====== * 主要是因為 dokuwiki 原本使用的 apache 改成 nginx 之後遇到 rewrite 無法如預期的運作所進行的設定紀錄. ===== 啟動 nginx 的 rewrite 運作紀錄 ===== * server { listen 80; server_name wiki.ichiayi.com www.ichiayi.com; : index index.html index.htm index.php doku.php; access_log /var/log/nginx/wiki.ichiayi.com/access.log; error_log /var/log/nginx/wiki.ichiayi.com/error.log notice; #error_log /var/log/nginx/wiki.ichiayi.com/error.log; rewrite_log on; root /var/www/html; : 主要是在 **error_log 後面增加 notice** 以及增加 **rewrite_log on** * 重新啟動 nginx 讓設定生效 systemctl restart nginx * 開始觀察 nginx rewrite 運作紀錄 tail -f /var/log/nginx/wiki.ichiayi.com/error.log Exp. : 2018/07/24 20:27:32 [notice] 894#894: *56 "^/wiki/_detail/(.*)" does not match "/wiki/tag/vmware", client: 192.168.11.101, server: wiki.ichiayi.com, request: "GET /wiki/tag/vmware 2018/07/24 20:27:32 [notice] 894#894: *56 "^/wiki/_export/([^/]+)/(.*)" does not match "/wiki/tag/vmware", client: 192.168.11.101, server: wiki.ichiayi.com, request: "GET /wiki/tag/vmware 2018/07/24 20:27:32 [notice] 894#894: *56 "^/wiki/(.*)" matches "/wiki/tag/vmware", client: 192.168.11.234, server: wiki.ichiayi.com, request: "GET /wiki/tag/vmware 2018/07/24 20:27:32 [notice] 894#894: *56 rewritten data: "/wiki/doku.php", args: "id=tag/vmware", client: 192.168.11.101, server: wiki.ichiayi.com, request: "GET /wiki/tag/vmware : * 可以透過 rewritten data: "/wiki/doku.php", args: "id=tag/vmware" 這樣的資訊來判別是否與預期的設定相符 ===== 設定 /wiki 為 dokuwiki 網址目錄範例 ===== * 依照 [[https://www.nginx.com/resources/wiki/start/topics/recipes/dokuwiki/| nginx 網站針對 dokuwiki]] 的設定範例修改 server { listen 80; server_name wiki.ichiayi.com www.ichiayi.com; autoindex off; client_max_body_size 15M; client_body_buffer_size 128k; index index.html index.htm index.php doku.php; access_log /var/log/nginx/wiki.ichiayi.com/access.log; #error_log /var/log/nginx/wiki.ichiayi.com/error.log notice; error_log /var/log/nginx/wiki.ichiayi.com/error.log; #rewrite_log on; root /var/www/html; location / { try_files $uri $uri/ @wiki; } location ~ ^/wiki/lib.*\.(gif|png|ico|jpg)$ { expires 30d; } location = /robots.txt { access_log off; log_not_found off; } location = /favicon.ico { access_log off; log_not_found off; } location ~ /\. { access_log off; log_not_found off; deny all; } location ~ ~$ { access_log off; log_not_found off; deny all; } location @wiki { rewrite ^/wiki/_media/(.*) /wiki/lib/exe/fetch.php?media=$1 last; rewrite ^/wiki/_detail/(.*) /wiki/lib/exe/detail.php?media=$1 last; rewrite ^/wiki/_export/([^/]+)/(.*) /wiki/doku.php?do=export_$1&id=$2 last; rewrite ^/wiki/(.*) /wiki/doku.php?id=$1 last; } location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; } location ~ /(data|conf|bin|inc)/ { deny all; } location ~ /\.ht { deny all; } } ===== 參考網址 ===== * https://coderwall.com/p/nmgwnw/debugging-nginx-rewrite * https://www.nginx.com/resources/wiki/start/topics/recipes/dokuwiki/ {{tag>nginx}}