Nginx chuyển hướng đến chỉ mục php

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

  1. trừ khi tệp tồn tại sẽ ghi lại vào chỉ mục. php
  2. 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 http://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ị
    return (1xx | 2xx | 4xx | 5xx) ["text"];
    0 và
    return (1xx | 2xx | 4xx | 5xx) ["text"];
    1 phù hợp cho những mục đích này
  • Để 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ị
    return (1xx | 2xx | 4xx | 5xx) ["text"];
    2 thường được sử dụng cho mục đích này

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

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ào

Chỉ thị return (1xx | 2xx | 4xx | 5xx) ["text"];0

Chỉ thị

root /home/user/www;
index index.php;

# Make site accessible from http://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 http://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 http://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 http://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;
}
7

Chỉ thị

root /home/user/www;
index index.php;

# Make site accessible from http://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 http://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 http://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 NGINX

return (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 http://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;
}
2

Ngoà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 http://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ẩn

Chỉ thị return (1xx | 2xx | 4xx | 5xx) ["text"];1

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 http://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ản

return (1xx | 2xx | 4xx | 5xx) ["text"];
3

Như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 http://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 http://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"];
7

Chú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 http://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ại

Chỉ 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àng

Chỉ thị return (1xx | 2xx | 4xx | 5xx) ["text"];2

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 http://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ùng

return (1xx | 2xx | 4xx | 5xx) ["text"];
9

NGINX 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ền

Trong 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ây

return (1xx | 2xx | 4xx | 5xx) ["text"];
9

Ví 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"];
7

Bở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"];
33

return (1xx | 2xx | 4xx | 5xx) ["text"];
1

Mộ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ày

return (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"];
root /home/user/www;
index index.php;

# Make site accessible from http://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 http://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"];
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"];
91

Mộ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"];
92

Chuyể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 http://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"];
931

return (1xx | 2xx | 4xx | 5xx) ["text"];
93

Chú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 http://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 web

Ví 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"];
94

Mộ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ày

return (1xx | 2xx | 4xx | 5xx) ["text"];
95

Như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"];
1

Ví 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"];
945

return (1xx | 2xx | 4xx | 5xx) ["text"];
96

Ví 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 http://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 Rails

return (1xx | 2xx | 4xx | 5xx) ["text"];
97

Nói một cách chính xác, mã phản hồi ____2948

return (1xx | 2xx | 4xx | 5xx) ["text"];
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"];
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

return (1xx | 2xx | 4xx | 5xx) ["text"];
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"];
79 mà không cần giải thích.

return (1xx | 2xx | 4xx | 5xx) ["text"];
98

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ễn

Ví 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