Trong cấu hình apache của tôi, tôi có quy tắc viết lại đơn giản sau đây
- trừ khi tệp tồn tại sẽ ghi lại vào chỉ mục. php
- trên các url bạn không bao giờ thấy phần mở rộng tệp [. php]
làm cách nào tôi có thể viết lại điều này trong nginx?
#
# Redirect all to index.php
#
RewriteEngine On
# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} [/[^.]*|\.]$ [NC]
RewriteRule .* index.php [L]
Đây là khối máy chủ nginx của tôi bây giờ trông như thế nào, nhưng nó không hoạt động 🙁
root /home/user/www;
index index.php;
# Make site accessible from //localhost/
server_name some-domain.dev;
###############################################################
# exclude /favicon.ico from logs
location = /favicon.ico {
log_not_found off;
access_log off;
}
##############################################################
# Disable logging for robots.txt
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
##############################################################
# Deny all attempts to access hidden files such as
# .htaccess, .htpasswd, .DS_Store [Mac].
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
##############################################################
#
location / {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php$args;
fastcgi_pass 127.0.0.1:9000;
}
###############################################################
# serve static files directly
location ~* ^.+.[jpg|jpeg|gif|css|png|js|ico]$ {
access_log off;
expires 30d;
}
###############################################################
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^[.+\.php][/.+]$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
Trong bài đăng trên blog này, chúng tôi thảo luận về cách tạo quy tắc viết lại NGINX [các phương pháp giống nhau hoạt động cho cả NGINX Plus và phần mềm NGINX mã nguồn mở]. Viết lại quy tắc thay đổi một phần hoặc toàn bộ URL trong yêu cầu của khách hàng, thường cho một trong hai mục đích
- Để thông báo cho khách hàng rằng tài nguyên họ đang yêu cầu hiện nằm ở một địa điểm khác. Các trường hợp sử dụng ví dụ là khi tên miền của trang web của bạn đã thay đổi, khi bạn muốn khách hàng sử dụng định dạng URL chuẩn [có hoặc không có tiền tố www] và khi bạn muốn nắm bắt và sửa các lỗi chính tả phổ biến của tên miền của mình. Các chỉ thị
0 vàreturn [1xx | 2xx | 4xx | 5xx] ["text"];
1 phù hợp cho những mục đích nàyreturn [1xx | 2xx | 4xx | 5xx] ["text"];
- Để kiểm soát luồng xử lý trong NGINX và NGINX Plus, chẳng hạn như để chuyển tiếp yêu cầu đến máy chủ ứng dụng khi nội dung cần được tạo động. Chỉ thị
2 thường được sử dụng cho mục đích nàyreturn [1xx | 2xx | 4xx | 5xx] ["text"];
Ghi chú. Để tìm hiểu cách chuyển đổi quy tắc viết lại máy chủ HTTP Apache thành quy tắc viết lại NGINX, hãy xem bài đăng trên blog đồng hành của chúng tôi, Chuyển đổi quy tắc viết lại Apache sang quy tắc viết lại NGINX
Chúng tôi cho rằng bạn đã quen thuộc với các mã phản hồi HTTP và các biểu thức thông thường [NGINX và NGINX Plus sử dụng cú pháp Perl]
So sánh Chỉ thị return [1xx | 2xx | 4xx | 5xx] ["text"];
0, return [1xx | 2xx | 4xx | 5xx] ["text"];
1 và return [1xx | 2xx | 4xx | 5xx] ["text"];
2
return [1xx | 2xx | 4xx | 5xx] ["text"];
return [1xx | 2xx | 4xx | 5xx] ["text"];
return [1xx | 2xx | 4xx | 5xx] ["text"];
Hai lệnh để viết lại NGINX cho mục đích chung là
return [1xx | 2xx | 4xx | 5xx] ["text"];
0 và return [1xx | 2xx | 4xx | 5xx] ["text"];
1, và lệnh return [1xx | 2xx | 4xx | 5xx] ["text"];
2 là một cách thuận tiện để gửi các yêu cầu trực tiếp đến các máy chủ ứng dụng. Hãy xem lại những gì các chỉ thị làm và chúng khác nhau như thế nàoChỉ thị return [1xx | 2xx | 4xx | 5xx] ["text"];
0
return [1xx | 2xx | 4xx | 5xx] ["text"];
Chỉ thị
root /home/user/www;
index index.php;
# Make site accessible from //localhost/
server_name some-domain.dev;
###############################################################
# exclude /favicon.ico from logs
location = /favicon.ico {
log_not_found off;
access_log off;
}
##############################################################
# Disable logging for robots.txt
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
##############################################################
# Deny all attempts to access hidden files such as
# .htaccess, .htpasswd, .DS_Store [Mac].
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
##############################################################
#
location / {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php$args;
fastcgi_pass 127.0.0.1:9000;
}
###############################################################
# serve static files directly
location ~* ^.+.[jpg|jpeg|gif|css|png|js|ico]$ {
access_log off;
expires 30d;
}
###############################################################
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^[.+\.php][/.+]$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
20 đơn giản hơn trong số hai chỉ thị có mục đích chung và vì lý do đó, chúng tôi khuyên bạn nên sử dụng nó thay vì return [1xx | 2xx | 4xx | 5xx] ["text"];
1 khi có thể [sau này sẽ nói thêm về lý do và khi nào]. Bạn gửi kèm theo return [1xx | 2xx | 4xx | 5xx] ["text"];
0 trong ngữ cảnh root /home/user/www;
index index.php;
# Make site accessible from //localhost/
server_name some-domain.dev;
###############################################################
# exclude /favicon.ico from logs
location = /favicon.ico {
log_not_found off;
access_log off;
}
##############################################################
# Disable logging for robots.txt
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
##############################################################
# Deny all attempts to access hidden files such as
# .htaccess, .htpasswd, .DS_Store [Mac].
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
##############################################################
#
location / {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php$args;
fastcgi_pass 127.0.0.1:9000;
}
###############################################################
# serve static files directly
location ~* ^.+.[jpg|jpeg|gif|css|png|js|ico]$ {
access_log off;
expires 30d;
}
###############################################################
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^[.+\.php][/.+]$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
23 hoặc root /home/user/www;
index index.php;
# Make site accessible from //localhost/
server_name some-domain.dev;
###############################################################
# exclude /favicon.ico from logs
location = /favicon.ico {
log_not_found off;
access_log off;
}
##############################################################
# Disable logging for robots.txt
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
##############################################################
# Deny all attempts to access hidden files such as
# .htaccess, .htpasswd, .DS_Store [Mac].
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
##############################################################
#
location / {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php$args;
fastcgi_pass 127.0.0.1:9000;
}
###############################################################
# serve static files directly
location ~* ^.+.[jpg|jpeg|gif|css|png|js|ico]$ {
access_log off;
expires 30d;
}
###############################################################
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^[.+\.php][/.+]$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
24 chỉ định các URL sẽ được viết lại và nó xác định URL đã sửa [viết lại] để khách hàng sử dụng trong các yêu cầu tài nguyên trong tương laiĐây là một ví dụ rất đơn giản giúp chuyển hướng khách hàng đến một tên miền mới
root /home/user/www;
index index.php;
# Make site accessible from //localhost/
server_name some-domain.dev;
###############################################################
# exclude /favicon.ico from logs
location = /favicon.ico {
log_not_found off;
access_log off;
}
##############################################################
# Disable logging for robots.txt
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
##############################################################
# Deny all attempts to access hidden files such as
# .htaccess, .htpasswd, .DS_Store [Mac].
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
##############################################################
#
location / {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php$args;
fastcgi_pass 127.0.0.1:9000;
}
###############################################################
# serve static files directly
location ~* ^.+.[jpg|jpeg|gif|css|png|js|ico]$ {
access_log off;
expires 30d;
}
###############################################################
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^[.+\.php][/.+]$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
7Chỉ thị
root /home/user/www;
index index.php;
# Make site accessible from //localhost/
server_name some-domain.dev;
###############################################################
# exclude /favicon.ico from logs
location = /favicon.ico {
log_not_found off;
access_log off;
}
##############################################################
# Disable logging for robots.txt
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
##############################################################
# Deny all attempts to access hidden files such as
# .htaccess, .htpasswd, .DS_Store [Mac].
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
##############################################################
#
location / {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php$args;
fastcgi_pass 127.0.0.1:9000;
}
###############################################################
# serve static files directly
location ~* ^.+.[jpg|jpeg|gif|css|png|js|ico]$ {
access_log off;
expires 30d;
}
###############################################################
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^[.+\.php][/.+]$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
25 có nghĩa là khối root /home/user/www;
index index.php;
# Make site accessible from //localhost/
server_name some-domain.dev;
###############################################################
# exclude /favicon.ico from logs
location = /favicon.ico {
log_not_found off;
access_log off;
}
##############################################################
# Disable logging for robots.txt
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
##############################################################
# Deny all attempts to access hidden files such as
# .htaccess, .htpasswd, .DS_Store [Mac].
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
##############################################################
#
location / {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php$args;
fastcgi_pass 127.0.0.1:9000;
}
###############################################################
# serve static files directly
location ~* ^.+.[jpg|jpeg|gif|css|png|js|ico]$ {
access_log off;
expires 30d;
}
###############################################################
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^[.+\.php][/.+]$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
26 áp dụng cho cả lưu lượng HTTP và HTTPS. Lệnh root /home/user/www;
index index.php;
# Make site accessible from //localhost/
server_name some-domain.dev;
###############################################################
# exclude /favicon.ico from logs
location = /favicon.ico {
log_not_found off;
access_log off;
}
##############################################################
# Disable logging for robots.txt
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
##############################################################
# Deny all attempts to access hidden files such as
# .htaccess, .htpasswd, .DS_Store [Mac].
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
##############################################################
#
location / {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php$args;
fastcgi_pass 127.0.0.1:9000;
}
###############################################################
# serve static files directly
location ~* ^.+.[jpg|jpeg|gif|css|png|js|ico]$ {
access_log off;
expires 30d;
}
###############################################################
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^[.+\.php][/.+]$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
27 khớp với các URL yêu cầu có tên miền www. tên Cu. com. Chỉ thị return [1xx | 2xx | 4xx | 5xx] ["text"];
0 yêu cầu NGINX ngừng xử lý yêu cầu và ngay lập tức gửi mã ______129 return [1xx | 2xx | 4xx | 5xx] ["text"];
30 return [1xx | 2xx | 4xx | 5xx] ["text"];
31 và URL được viết lại đã chỉ định cho máy khách. URL được viết lại sử dụng hai biến NGINX để nắm bắt và sao chép các giá trị từ URL yêu cầu ban đầu. return [1xx | 2xx | 4xx | 5xx] ["text"];
32 là giao thức [http hoặc https] và return [1xx | 2xx | 4xx | 5xx] ["text"];
33 là URI đầy đủ bao gồm các đối số. Đối với mã trong sê-ri
return [1xx | 2xx | 4xx | 5xx] ["text"];
34, tham số return [1xx | 2xx | 4xx | 5xx] ["text"];
35 xác định URL mới [được viết lại]return [1xx | 2xx | 4xx | 5xx] ["text"];
9Đối với các mã khác, bạn có thể tùy ý xác định một chuỗi văn bản xuất hiện trong nội dung phản hồi [văn bản chuẩn cho mã HTTP, chẳng hạn như
return [1xx | 2xx | 4xx | 5xx] ["text"];
36 return [1xx | 2xx | 4xx | 5xx] ["text"];
37 cho return [1xx | 2xx | 4xx | 5xx] ["text"];
38, vẫn được bao gồm trong tiêu đề]. Văn bản có thể chứa các biến NGINXreturn [1xx | 2xx | 4xx | 5xx] ["text"];
Ví dụ: lệnh này có thể phù hợp khi từ chối các yêu cầu không có mã thông báo xác thực hợp lệ
root /home/user/www;
index index.php;
# Make site accessible from //localhost/
server_name some-domain.dev;
###############################################################
# exclude /favicon.ico from logs
location = /favicon.ico {
log_not_found off;
access_log off;
}
##############################################################
# Disable logging for robots.txt
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
##############################################################
# Deny all attempts to access hidden files such as
# .htaccess, .htpasswd, .DS_Store [Mac].
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
##############################################################
#
location / {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php$args;
fastcgi_pass 127.0.0.1:9000;
}
###############################################################
# serve static files directly
location ~* ^.+.[jpg|jpeg|gif|css|png|js|ico]$ {
access_log off;
expires 30d;
}
###############################################################
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^[.+\.php][/.+]$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
2Ngoài ra còn có một số lối tắt cú pháp mà bạn có thể sử dụng, chẳng hạn như bỏ qua mã nếu nó là
return [1xx | 2xx | 4xx | 5xx] ["text"];
39; [Trong một số trường hợp, bạn có thể muốn trả về một phản hồi phức tạp hơn hoặc nhiều sắc thái hơn mức bạn có thể đạt được trong một chuỗi văn bản. Với chỉ thị
return [1xx | 2xx | 4xx | 5xx] ["text"];
71, bạn có thể trả về một trang HTML tùy chỉnh hoàn chỉnh cho mỗi mã HTTP, cũng như thay đổi mã phản hồi hoặc thực hiện chuyển hướng. ]Vì vậy, chỉ thị
return [1xx | 2xx | 4xx | 5xx] ["text"];
0 rất dễ sử dụng và phù hợp khi chuyển hướng đáp ứng hai điều kiện. URL được viết lại phù hợp với mọi yêu cầu khớp với khối root /home/user/www;
index index.php;
# Make site accessible from //localhost/
server_name some-domain.dev;
###############################################################
# exclude /favicon.ico from logs
location = /favicon.ico {
log_not_found off;
access_log off;
}
##############################################################
# Disable logging for robots.txt
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
##############################################################
# Deny all attempts to access hidden files such as
# .htaccess, .htpasswd, .DS_Store [Mac].
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
##############################################################
#
location / {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php$args;
fastcgi_pass 127.0.0.1:9000;
}
###############################################################
# serve static files directly
location ~* ^.+.[jpg|jpeg|gif|css|png|js|ico]$ {
access_log off;
expires 30d;
}
###############################################################
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^[.+\.php][/.+]$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
26 hoặc return [1xx | 2xx | 4xx | 5xx] ["text"];
74 và bạn có thể tạo URL được viết lại bằng các biến NGINX tiêu chuẩnChỉ thị return [1xx | 2xx | 4xx | 5xx] ["text"];
1
return [1xx | 2xx | 4xx | 5xx] ["text"];
Nhưng điều gì sẽ xảy ra nếu bạn cần kiểm tra sự khác biệt phức tạp hơn giữa các URL, nắm bắt các phần tử trong URL gốc không có các biến NGINX tương ứng hoặc thay đổi hoặc thêm các phần tử trong đường dẫn?
Giống như chỉ thị
return [1xx | 2xx | 4xx | 5xx] ["text"];
0, bạn gửi kèm theo chỉ thị return [1xx | 2xx | 4xx | 5xx] ["text"];
78 trong ngữ cảnh root /home/user/www;
index index.php;
# Make site accessible from //localhost/
server_name some-domain.dev;
###############################################################
# exclude /favicon.ico from logs
location = /favicon.ico {
log_not_found off;
access_log off;
}
##############################################################
# Disable logging for robots.txt
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
##############################################################
# Deny all attempts to access hidden files such as
# .htaccess, .htpasswd, .DS_Store [Mac].
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
##############################################################
#
location / {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php$args;
fastcgi_pass 127.0.0.1:9000;
}
###############################################################
# serve static files directly
location ~* ^.+.[jpg|jpeg|gif|css|png|js|ico]$ {
access_log off;
expires 30d;
}
###############################################################
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^[.+\.php][/.+]$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
26 hoặc return [1xx | 2xx | 4xx | 5xx] ["text"];
74 xác định các URL sẽ được viết lại. Mặt khác, hai chỉ thị khá khác biệt hơn là giống nhau và chỉ thị return [1xx | 2xx | 4xx | 5xx] ["text"];
1 có thể phức tạp hơn để sử dụng chính xác. Cú pháp của nó đủ đơn giảnreturn [1xx | 2xx | 4xx | 5xx] ["text"];
3Nhưng đối số đầu tiên,
return [1xx | 2xx | 4xx | 5xx] ["text"];
92, có nghĩa là NGINX Plus và NGINX chỉ viết lại URL nếu nó khớp với biểu thức chính quy đã chỉ định [ngoài việc khớp với lệnh root /home/user/www;
index index.php;
# Make site accessible from //localhost/
server_name some-domain.dev;
###############################################################
# exclude /favicon.ico from logs
location = /favicon.ico {
log_not_found off;
access_log off;
}
##############################################################
# Disable logging for robots.txt
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
##############################################################
# Deny all attempts to access hidden files such as
# .htaccess, .htpasswd, .DS_Store [Mac].
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
##############################################################
#
location / {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php$args;
fastcgi_pass 127.0.0.1:9000;
}
###############################################################
# serve static files directly
location ~* ^.+.[jpg|jpeg|gif|css|png|js|ico]$ {
access_log off;
expires 30d;
}
###############################################################
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^[.+\.php][/.+]$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
26 hoặc return [1xx | 2xx | 4xx | 5xx] ["text"];
74]. Thử nghiệm bổ sung có nghĩa là NGINX phải xử lý nhiều hơnĐiểm khác biệt thứ hai là chỉ thị
return [1xx | 2xx | 4xx | 5xx] ["text"];
1 chỉ có thể trả về mã root /home/user/www;
index index.php;
# Make site accessible from //localhost/
server_name some-domain.dev;
###############################################################
# exclude /favicon.ico from logs
location = /favicon.ico {
log_not_found off;
access_log off;
}
##############################################################
# Disable logging for robots.txt
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
##############################################################
# Deny all attempts to access hidden files such as
# .htaccess, .htpasswd, .DS_Store [Mac].
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
##############################################################
#
location / {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php$args;
fastcgi_pass 127.0.0.1:9000;
}
###############################################################
# serve static files directly
location ~* ^.+.[jpg|jpeg|gif|css|png|js|ico]$ {
access_log off;
expires 30d;
}
###############################################################
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^[.+\.php][/.+]$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
29 hoặc return [1xx | 2xx | 4xx | 5xx] ["text"];
39. Để trả về các mã khác, bạn cần bao gồm chỉ thị return [1xx | 2xx | 4xx | 5xx] ["text"];
0 sau chỉ thị return [1xx | 2xx | 4xx | 5xx] ["text"];
1 [xem ví dụ bên dưới]Và cuối cùng, chỉ thị
return [1xx | 2xx | 4xx | 5xx] ["text"];
1 không nhất thiết phải dừng quá trình xử lý yêu cầu của NGINX như return [1xx | 2xx | 4xx | 5xx] ["text"];
0, và nó không nhất thiết phải gửi chuyển hướng đến máy khách. Trừ khi bạn chỉ rõ [bằng cờ hoặc cú pháp của URL] rằng bạn muốn NGINX tạm dừng xử lý hoặc gửi chuyển hướng, nó sẽ chạy qua toàn bộ cấu hình để tìm kiếm các lệnh được xác định trong mô-đun Viết lại [return [1xx | 2xx | 4xx | 5xx] ["text"];
92, return [1xx | 2xx | 4xx | 5xx] ["text"];
93, return [1xx | 2xx | 4xx | 5xx] ["text"];
0, return [1xx | 2xx | 4xx | 5xx] ["text"];
1 . Nếu một URL được viết lại khớp với một lệnh tiếp theo từ mô-đun Viết lại, NGINX sẽ thực hiện hành động được chỉ định trên URL đã viết lại [thường viết lại nó một lần nữa]Đây là lúc mọi thứ có thể trở nên phức tạp và bạn cần lập kế hoạch cẩn thận về cách sắp xếp thứ tự các lệnh để đạt được kết quả mong muốn. Chẳng hạn, nếu khối
return [1xx | 2xx | 4xx | 5xx] ["text"];
74 ban đầu và các quy tắc viết lại NGINX trong đó khớp với URL đã viết lại, NGINX có thể rơi vào một vòng lặp, áp dụng viết lại nhiều lần cho đến giới hạn tích hợp sẵn là 10 lần. Để tìm hiểu tất cả các chi tiết, hãy xem tài liệu dành cho mô-đun Viết lại. Như đã lưu ý trước đó, chúng tôi khuyên bạn nên sử dụng chỉ thị return [1xx | 2xx | 4xx | 5xx] ["text"];
0 nếu có thể để thay thếĐây là quy tắc viết lại NGINX mẫu sử dụng chỉ thị
return [1xx | 2xx | 4xx | 5xx] ["text"];
1. Nó khớp với các URL bắt đầu bằng chuỗi /download và sau đó bao gồm thư mục /media/ hoặc /audio/ ở đâu đó sau này trong đường dẫn. Nó thay thế các phần tử đó bằng /mp3/ và thêm phần mở rộng tệp thích hợp,. mp3 hoặc. ra. Các biến return [1xx | 2xx | 4xx | 5xx] ["text"];
70 và return [1xx | 2xx | 4xx | 5xx] ["text"];
71 nắm bắt các phần tử đường dẫn không thay đổi. Ví dụ: /download/cdn-west/media/file1 trở thành /download/cdn-west/mp3 . mp3 . Nếu có phần mở rộng trên tên tệp [chẳng hạn như. flv], biểu thức sẽ loại bỏ nó và thay thế nó bằng. mp3. return [1xx | 2xx | 4xx | 5xx] ["text"];
7Chúng tôi đã đề cập ở trên rằng bạn có thể thêm cờ vào lệnh
return [1xx | 2xx | 4xx | 5xx] ["text"];
1 để kiểm soát luồng xử lý. Cờ return [1xx | 2xx | 4xx | 5xx] ["text"];
73 trong ví dụ là một trong số đó. nó yêu cầu NGINX bỏ qua mọi chỉ thị mô-đun Viết lại tiếp theo trong khối root /home/user/www;
index index.php;
# Make site accessible from //localhost/
server_name some-domain.dev;
###############################################################
# exclude /favicon.ico from logs
location = /favicon.ico {
log_not_found off;
access_log off;
}
##############################################################
# Disable logging for robots.txt
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
##############################################################
# Deny all attempts to access hidden files such as
# .htaccess, .htpasswd, .DS_Store [Mac].
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
##############################################################
#
location / {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php$args;
fastcgi_pass 127.0.0.1:9000;
}
###############################################################
# serve static files directly
location ~* ^.+.[jpg|jpeg|gif|css|png|js|ico]$ {
access_log off;
expires 30d;
}
###############################################################
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^[.+\.php][/.+]$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
26 hoặc return [1xx | 2xx | 4xx | 5xx] ["text"];
74 hiện tại và bắt đầu tìm kiếm một return [1xx | 2xx | 4xx | 5xx] ["text"];
74 mới khớp với URL đã viết lạiChỉ thị cuối cùng của
return [1xx | 2xx | 4xx | 5xx] ["text"];
0 trong ví dụ này có nghĩa là nếu URL không khớp với chỉ thị của return [1xx | 2xx | 4xx | 5xx] ["text"];
1, thì mã return [1xx | 2xx | 4xx | 5xx] ["text"];
79 sẽ được trả lại cho khách hàngChỉ thị return [1xx | 2xx | 4xx | 5xx] ["text"];
2
return [1xx | 2xx | 4xx | 5xx] ["text"];
Giống như chỉ thị
return [1xx | 2xx | 4xx | 5xx] ["text"];
0 và return [1xx | 2xx | 4xx | 5xx] ["text"];
1, chỉ thị return [1xx | 2xx | 4xx | 5xx] ["text"];
13 được đặt trong khối root /home/user/www;
index index.php;
# Make site accessible from //localhost/
server_name some-domain.dev;
###############################################################
# exclude /favicon.ico from logs
location = /favicon.ico {
log_not_found off;
access_log off;
}
##############################################################
# Disable logging for robots.txt
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
##############################################################
# Deny all attempts to access hidden files such as
# .htaccess, .htpasswd, .DS_Store [Mac].
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
##############################################################
#
location / {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php$args;
fastcgi_pass 127.0.0.1:9000;
}
###############################################################
# serve static files directly
location ~* ^.+.[jpg|jpeg|gif|css|png|js|ico]$ {
access_log off;
expires 30d;
}
###############################################################
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^[.+\.php][/.+]$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
26 hoặc return [1xx | 2xx | 4xx | 5xx] ["text"];
74. Là tham số, nó nhận danh sách một hoặc nhiều tệp và thư mục và URI cuối cùngreturn [1xx | 2xx | 4xx | 5xx] ["text"];
9NGINX kiểm tra sự tồn tại của các tệp và thư mục theo thứ tự [xây dựng đường dẫn đầy đủ đến từng tệp từ cài đặt của các chỉ thị
return [1xx | 2xx | 4xx | 5xx] ["text"];
16 và return [1xx | 2xx | 4xx | 5xx] ["text"];
17] và phục vụ tệp đầu tiên mà nó tìm thấy. Để chỉ ra một thư mục, hãy thêm một dấu gạch chéo vào cuối tên phần tử. Nếu không có tệp hoặc thư mục nào tồn tại, NGINX sẽ thực hiện chuyển hướng nội bộ tới URI được xác định bởi phần tử cuối cùng [return [1xx | 2xx | 4xx | 5xx] ["text"];
18]Để chỉ thị
return [1xx | 2xx | 4xx | 5xx] ["text"];
2 hoạt động, bạn cũng cần xác định khối return [1xx | 2xx | 4xx | 5xx] ["text"];
74 nắm bắt chuyển hướng nội bộ, như minh họa trong ví dụ sau. Phần tử cuối cùng có thể là một vị trí đã đặt tên, được biểu thị bằng ký hiệu đầu tiên [return [1xx | 2xx | 4xx | 5xx] ["text"];
901]Chỉ thị
return [1xx | 2xx | 4xx | 5xx] ["text"];
2 thường sử dụng biến return [1xx | 2xx | 4xx | 5xx] ["text"];
903, đại diện cho một phần của URL sau tên miềnTrong ví dụ sau, NGINX phục vụ tệp GIF mặc định nếu tệp được khách hàng yêu cầu không tồn tại. Khi khách hàng yêu cầu [ví dụ] http. //www. miền. com/hình ảnh/hình ảnh1. gif, NGINX trước tiên tìm image1. gif trong thư mục cục bộ được chỉ định bởi chỉ thị
return [1xx | 2xx | 4xx | 5xx] ["text"];
904 hoặc return [1xx | 2xx | 4xx | 5xx] ["text"];
905 áp dụng cho vị trí [không được hiển thị trong đoạn trích]. Nếu hình ảnh1. gif không tồn tại, NGINX tìm image1. gif/ và nếu không tồn tại, nó sẽ chuyển hướng đến /images/default. gif. Giá trị đó khớp chính xác với lệnh return [1xx | 2xx | 4xx | 5xx] ["text"];
74 thứ hai, vì vậy, quá trình xử lý dừng lại và NGINX phân phối tệp đó và đánh dấu tệp được lưu vào bộ nhớ cache trong 30 giâyreturn [1xx | 2xx | 4xx | 5xx] ["text"];
9Ví dụ – Chuẩn hóa tên miền
Một trong những cách sử dụng phổ biến nhất của các quy tắc viết lại NGINX là nắm bắt các phiên bản không dùng nữa hoặc không chuẩn của tên miền trang web và chuyển hướng chúng đến tên hiện tại. Có một số trường hợp sử dụng liên quan
Chuyển hướng từ Tên cũ sang Tên hiện tại
Quy tắc viết lại NGINX mẫu này chuyển hướng vĩnh viễn các yêu cầu từ www. tên Cu. com và tên cũ. đến www. tên mới. com, sử dụng hai biến NGINX để lấy các giá trị từ URL yêu cầu ban đầu –
return [1xx | 2xx | 4xx | 5xx] ["text"];
32 là giao thức ban đầu [http hoặc https] và return [1xx | 2xx | 4xx | 5xx] ["text"];
33 là URI đầy đủ [theo sau tên miền], bao gồm cả các đối sốreturn [1xx | 2xx | 4xx | 5xx] ["text"];
7Bởi vì
return [1xx | 2xx | 4xx | 5xx] ["text"];
33 nắm bắt phần URL theo sau tên miền, cách viết lại này phù hợp nếu có sự tương ứng một-một của các trang giữa các trang web cũ và mới [ví dụ: www. tên mới. com/about có nội dung cơ bản giống như www. tên Cu. com/về]. Nếu bạn đã tổ chức lại trang web ngoài việc thay đổi tên miền, thì có thể an toàn hơn khi chuyển hướng tất cả các yêu cầu đến trang chủ, bằng cách bỏ qua return [1xx | 2xx | 4xx | 5xx] ["text"];
33return [1xx | 2xx | 4xx | 5xx] ["text"];
1Một số blog khác về viết lại URL trong NGINX sử dụng chỉ thị
return [1xx | 2xx | 4xx | 5xx] ["text"];
1 cho các trường hợp sử dụng này, như thế nàyreturn [1xx | 2xx | 4xx | 5xx] ["text"];
90Điều này kém hiệu quả hơn so với chỉ thị
return [1xx | 2xx | 4xx | 5xx] ["text"];
0 tương đương, vì nó yêu cầu NGINX xử lý một biểu thức chính quy, mặc dù là một biểu thức đơn giản [dấu mũ [ return [1xx | 2xx | 4xx | 5xx] ["text"];
913 ], khớp với toàn bộ URL ban đầu]. Chỉ thị return [1xx | 2xx | 4xx | 5xx] ["text"];
0 tương ứng cũng dễ hiểu hơn đối với người đọc. return [1xx | 2xx | 4xx | 5xx] ["text"];
0 root /home/user/www;
index index.php;
# Make site accessible from //localhost/
server_name some-domain.dev;
###############################################################
# exclude /favicon.ico from logs
location = /favicon.ico {
log_not_found off;
access_log off;
}
##############################################################
# Disable logging for robots.txt
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
##############################################################
# Deny all attempts to access hidden files such as
# .htaccess, .htpasswd, .DS_Store [Mac].
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
##############################################################
#
location / {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php$args;
fastcgi_pass 127.0.0.1:9000;
}
###############################################################
# serve static files directly
location ~* ^.+.[jpg|jpeg|gif|css|png|js|ico]$ {
access_log off;
expires 30d;
}
###############################################################
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^[.+\.php][/.+]$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
29 chỉ ra rằng NGINX trả về mã root /home/user/www;
index index.php;
# Make site accessible from //localhost/
server_name some-domain.dev;
###############################################################
# exclude /favicon.ico from logs
location = /favicon.ico {
log_not_found off;
access_log off;
}
##############################################################
# Disable logging for robots.txt
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
##############################################################
# Deny all attempts to access hidden files such as
# .htaccess, .htpasswd, .DS_Store [Mac].
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
##############################################################
#
location / {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php$args;
fastcgi_pass 127.0.0.1:9000;
}
###############################################################
# serve static files directly
location ~* ^.+.[jpg|jpeg|gif|css|png|js|ico]$ {
access_log off;
expires 30d;
}
###############################################################
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^[.+\.php][/.+]$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
29 rõ ràng hơn so với ký hiệu return [1xx | 2xx | 4xx | 5xx] ["text"];
1 return [1xx | 2xx | 4xx | 5xx] ["text"];
919 return [1xx | 2xx | 4xx | 5xx] ["text"];
920 . Thêm và xóa tiền tố www
Những ví dụ này thêm và xóa tiền tố www
return [1xx | 2xx | 4xx | 5xx] ["text"];
91Một lần nữa,
return [1xx | 2xx | 4xx | 5xx] ["text"];
0 thích hợp hơn so với return [1xx | 2xx | 4xx | 5xx] ["text"];
1 tương đương, như sau. return [1xx | 2xx | 4xx | 5xx] ["text"];
1 yêu cầu diễn giải một biểu thức chính quy – return [1xx | 2xx | 4xx | 5xx] ["text"];
924 – và tạo một biến tùy chỉnh [return [1xx | 2xx | 4xx | 5xx] ["text"];
70] trên thực tế tương đương với biến return [1xx | 2xx | 4xx | 5xx] ["text"];
33 được tích hợp sẵn. return [1xx | 2xx | 4xx | 5xx] ["text"];
92Chuyển hướng tất cả lưu lượng truy cập đến tên miền chính xác
Đây là trường hợp đặc biệt chuyển hướng lưu lượng truy cập đến trang chủ của trang web khi URL yêu cầu không khớp với bất kỳ khối
root /home/user/www;
index index.php;
# Make site accessible from //localhost/
server_name some-domain.dev;
###############################################################
# exclude /favicon.ico from logs
location = /favicon.ico {
log_not_found off;
access_log off;
}
##############################################################
# Disable logging for robots.txt
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
##############################################################
# Deny all attempts to access hidden files such as
# .htaccess, .htpasswd, .DS_Store [Mac].
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
##############################################################
#
location / {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php$args;
fastcgi_pass 127.0.0.1:9000;
}
###############################################################
# serve static files directly
location ~* ^.+.[jpg|jpeg|gif|css|png|js|ico]$ {
access_log off;
expires 30d;
}
###############################################################
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^[.+\.php][/.+]$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
26 và return [1xx | 2xx | 4xx | 5xx] ["text"];
74 nào, có thể do tên miền bị sai chính tả. Nó hoạt động bằng cách kết hợp tham số return [1xx | 2xx | 4xx | 5xx] ["text"];
929 với chỉ thị return [1xx | 2xx | 4xx | 5xx] ["text"];
930 và dấu gạch dưới làm tham số cho chỉ thị return [1xx | 2xx | 4xx | 5xx] ["text"];
931return [1xx | 2xx | 4xx | 5xx] ["text"];
93Chúng tôi sử dụng dấu gạch dưới làm tham số cho
return [1xx | 2xx | 4xx | 5xx] ["text"];
931 để tránh vô tình khớp với một tên miền thực – có thể giả định rằng sẽ không có trang web nào có dấu gạch dưới làm tên miền của nó. Tuy nhiên, các yêu cầu không khớp với bất kỳ khối root /home/user/www;
index index.php;
# Make site accessible from //localhost/
server_name some-domain.dev;
###############################################################
# exclude /favicon.ico from logs
location = /favicon.ico {
log_not_found off;
access_log off;
}
##############################################################
# Disable logging for robots.txt
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
##############################################################
# Deny all attempts to access hidden files such as
# .htaccess, .htpasswd, .DS_Store [Mac].
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
##############################################################
#
location / {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php$args;
fastcgi_pass 127.0.0.1:9000;
}
###############################################################
# serve static files directly
location ~* ^.+.[jpg|jpeg|gif|css|png|js|ico]$ {
access_log off;
expires 30d;
}
###############################################################
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^[.+\.php][/.+]$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
26 nào khác trong cấu hình sẽ kết thúc ở đây và tham số return [1xx | 2xx | 4xx | 5xx] ["text"];
929 thành return [1xx | 2xx | 4xx | 5xx] ["text"];
930 yêu cầu NGINX sử dụng khối này cho chúng. Bằng cách bỏ qua biến return [1xx | 2xx | 4xx | 5xx] ["text"];
33 khỏi URL được viết lại, chúng tôi chuyển hướng tất cả các yêu cầu đến trang chủ, một ý tưởng hay vì các yêu cầu có tên miền sai đặc biệt có khả năng sử dụng các URI không tồn tại trên trang webVí dụ – Buộc tất cả Yêu cầu sử dụng SSL/TLS
Khối 126 ________ này buộc tất cả khách truy cập sử dụng kết nối an toàn [SSL/TLS] tới trang web của bạn
return [1xx | 2xx | 4xx | 5xx] ["text"];
94Một số blog khác về quy tắc viết lại NGINX sử dụng thử nghiệm
return [1xx | 2xx | 4xx | 5xx] ["text"];
93 và chỉ thị return [1xx | 2xx | 4xx | 5xx] ["text"];
1 cho trường hợp sử dụng này, như thế nàyreturn [1xx | 2xx | 4xx | 5xx] ["text"];
95Nhưng phương pháp này cần xử lý thêm vì NGINX phải vừa đánh giá điều kiện
return [1xx | 2xx | 4xx | 5xx] ["text"];
93 vừa xử lý biểu thức chính quy trong chỉ thị return [1xx | 2xx | 4xx | 5xx] ["text"];
1Ví dụ – Kích hoạt liên kết cố định đẹp cho trang web WordPress
NGINX và NGINX Plus là những nền tảng phân phối ứng dụng rất phổ biến cho các trang web sử dụng WordPress. Chỉ thị
return [1xx | 2xx | 4xx | 5xx] ["text"];
2 sau đây yêu cầu NGINX kiểm tra sự tồn tại của tệp, return [1xx | 2xx | 4xx | 5xx] ["text"];
943, và sau đó là thư mục, return [1xx | 2xx | 4xx | 5xx] ["text"];
944. Nếu tệp hoặc thư mục không tồn tại, NGINX sẽ trả về một chuyển hướng đến /index. php và chuyển các đối số chuỗi truy vấn, được ghi lại bởi tham số return [1xx | 2xx | 4xx | 5xx] ["text"];
945return [1xx | 2xx | 4xx | 5xx] ["text"];
96Ví dụ – Bỏ yêu cầu đối với phần mở rộng tệp không được hỗ trợ
Vì nhiều lý do, trang web của bạn có thể nhận được các URL yêu cầu kết thúc bằng phần mở rộng tệp tương ứng với máy chủ ứng dụng mà bạn không chạy. Trong ví dụ này từ blog Engine Yard, máy chủ ứng dụng là Ruby on Rails, vì vậy các yêu cầu với các loại tệp được xử lý bởi các máy chủ ứng dụng khác [Trang máy chủ đang hoạt động, PHP, CGI, v.v.] không thể được phục vụ và cần phải bị từ chối. Trong khối
root /home/user/www;
index index.php;
# Make site accessible from //localhost/
server_name some-domain.dev;
###############################################################
# exclude /favicon.ico from logs
location = /favicon.ico {
log_not_found off;
access_log off;
}
##############################################################
# Disable logging for robots.txt
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
##############################################################
# Deny all attempts to access hidden files such as
# .htaccess, .htpasswd, .DS_Store [Mac].
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
##############################################################
#
location / {
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/index.php$args;
fastcgi_pass 127.0.0.1:9000;
}
###############################################################
# serve static files directly
location ~* ^.+.[jpg|jpeg|gif|css|png|js|ico]$ {
access_log off;
expires 30d;
}
###############################################################
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^[.+\.php][/.+]$;
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
26 chuyển bất kỳ yêu cầu nào đối với nội dung được tạo động cho ứng dụng, lệnh return [1xx | 2xx | 4xx | 5xx] ["text"];
74 này loại bỏ các yêu cầu đối với các loại tệp không phải Rails trước khi chúng vào hàng đợi Railsreturn [1xx | 2xx | 4xx | 5xx] ["text"];
97Nói một cách chính xác, mã phản hồi ____2948
949 được dành cho các tình huống khi tài nguyên được yêu cầu từng có tại URL này nhưng giờ không còn nữa, . Ưu điểm của nó so với mã phản hồi return [1xx | 2xx | 4xx | 5xx] ["text"];
return [1xx | 2xx | 4xx | 5xx] ["text"];
38 là nó cho biết rõ ràng tài nguyên vĩnh viễn không khả dụng, vì vậy khách hàng sẽ không gửi lại yêu cầu. Bạn có thể muốn cung cấp cho khách hàng thông tin chính xác hơn về lý do thất bại, bằng cách trả lại mã phản hồi
79 return [1xx | 2xx | 4xx | 5xx] ["text"];
952 và giải thích . Thay vào đó, lệnh return [1xx | 2xx | 4xx | 5xx] ["text"];
959 trả về return [1xx | 2xx | 4xx | 5xx] ["text"];
return [1xx | 2xx | 4xx | 5xx] ["text"];
79 mà không cần giải thích. return [1xx | 2xx | 4xx | 5xx] ["text"];
98Mã
return [1xx | 2xx | 4xx | 5xx] ["text"];
79 xác nhận hoàn toàn rằng tài nguyên được yêu cầu tồn tại, vì vậy mã return [1xx | 2xx | 4xx | 5xx] ["text"];
38 có thể là lựa chọn tốt hơn nếu bạn muốn đạt được “bảo mật thông qua che khuất” bằng cách cung cấp cho khách hàng càng ít thông tin càng tốt. Nhược điểm là khách hàng có thể thử lại yêu cầu nhiều lần vì return [1xx | 2xx | 4xx | 5xx] ["text"];
38 không cho biết lỗi là tạm thời hay vĩnh viễnVí dụ – Định cấu hình định tuyến tùy chỉnh
Trong ví dụ này từ MODXCloud, bạn có một tài nguyên có chức năng như một bộ điều khiển cho một tập hợp các URL. Người dùng của bạn có thể sử dụng tên dễ đọc hơn cho tài nguyên và bạn viết lại [không chuyển hướng] nó để bộ điều khiển xử lý tại danh sách. html