Khi sử dụng, bạn hãy thêm vào file cấu hình conf của tên miền, thông thường file cấu hình hệ thống Nginx thường nằm trong thư mục
/etc/nginx/conf.d/
Một số ví dụ rule Nginx
Canonical URLs
Redirect toàn bộ request từ
www.mydomain.com
sang mydomain.com
, kèm theo cả đường dẫn và tham số phía sau url.
NGINX:
server {
server_name www.mydomain.com;
rewrite ^(.*) $scheme://mydomain.com$1 permanent;
}
mydomain.com
sang www.mydomain.com
, kèm theo cả đường dẫn và tham số phía sau url.
NGINX:
server {
server_name mydomain.com;
rewrite ^(.*) $scheme://www.mydomain.com$1 permanent;
}
SSL Sites
Google hiện tại đang sử dụng SSL là một yếu tố xếp hạng, nếu bạn sử dụng các site eCommerce, hãy sử dụng SSL.
Rule bên dưới sẽ redirect tất cả request sử dụng HTTPS, trường hợp này giả sử bạn sử dụng
www.domain.com
làm tên miền chính.
NGINX:
# Tells the browser to always force SSL.
if ($scheme != "https") {
rewrite ^ https://www.mydomain.com$uri permanent;
}
if ($host != "www.mydomain.com") {
rewrite ^ https://www.mydomain.com$uri permanent;
}
Bắt buộc sử dụng SSL
Bắt buộc phải sử dụng SSL với một đường dẫn bất kỳ:
NGINX:
set $redirect false;
if ($request_uri ~ ^/manager(\/)?$ ) {
set $redirect true;
}
if ($scheme = https) {
set $redirect false;
}
if ($redirect = true) {
return 301 https://www.domain.com$request_uri;
}
Tối ưu Browser Caching
Bằng việc sử dụng browser caching, website của bạn sẽ load nhanh hơn rất nhiều kể từ sau lần visit đầu tiên:
NGINX:
location ~* \.(?:ico|css|js|jpe?g|png|gif|svg|pdf|mov|mp4|mp3|woff)$ {
expires 7d;
add_header Pragma public;
add_header Cache-Control "public";
gzip_vary on;
}
Giới hạn IP truy cập
Trong trường hợp bạn muốn chỉ một số IP được phép truy cập, hãy sử dụng rule bên dưới:
NGINX:
location /manager/ {
# allow anyone in 192.168.1.0/24
allow 192.168.1.0/24;
# allow one workstation
allow 127.0.0.1;
# drop rest of the world
deny all;
}
Block IP
Khác với trường hợp chỉ cho phép một số IP được truy cập vào, rule bên dưới sẽ block một số IP xác định trước.
NGINX:
location /manager/ {
# block one workstation
deny 192.168.1.1;
# block anyone in 127.0.1.1/24
deny 127.0.1.1/24;
# allow rest of the world
allow all;
}
Ngăn những site khác sử dụng hình ảnh
Với đoạn code dưới, bạn sẽ hạn chế những site khác sử dụng hình ảnh trực tiếp:
NGINX:
location ~* \.(gif|png|jpe?g)$ {
valid_referers none blocked ~.google. ~.bing. ~.yahoo. .domain.com *.domain.com;
if ($invalid_referer) {
return 403;
}
}
NGINX:
location /wp-content/ {
valid_referers none blocked ~.google. ~.bing. ~.yahoo. .domain.com *.domain.com;
if ($invalid_referer) {
return 403;
}
}
NGINX:
location ~* \.(gif|png|jpe?g)$ {
valid_referers none blocked ~.google. ~.bing. ~.yahoo. .domain.com *.domain.com;
if ($invalid_referer) {
rewrite (.*)\.(jpg|jpeg|png|gif)$ http://www.domain.com/images/warning.jpg;
}
}
NGINX:
location ~* \.(3gp|gif|jpg|jpeg|png|ico|wmv|avi|asf|asx|mpg|mpeg|mp4|pls|mp3|mid|wav|swf|flv|exe|zip|tar|rar|gz|tgz|bz2|uha|7z|doc|docx|xls|xlsx|pdf|iso|eot|svg|ttf|woff)$ {
valid_referers none blocked ~.google. ~.bing. ~.yahoo. hocvps.com *.hocvps.com;
if ($invalid_referer) {
return 403;
}
gzip_static off;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
access_log off;
expires 30d;
break;
}
Bảo vệ thư mục bằng mật khẩu
Đầu tiên, bạn cần sử dụng tool này để tạo file
.htpasswd
, sau đó dùng đoạn code bên dưới, giả sử mình lưu ở /root/.htpasswd
NGINX:
location /protectme/ {
auth_basic "Restricted";
auth_basic_user_file /root/.htpasswd;
}
Rewrite URL
Ví dụ bên dưới giả sử bạn muốn rewrite (không phải redirect) đường dẫn
http://domain.com/listing/123
thành http://domain.com/listing.php?id=123
NGINX:
rewrite ^/listing/(.*)$ /listing.php?id=$1 last;
(.*)
ở đây là regular expression
, đại diện cho bất kỳ ký tự nào. Nếu thêm regular expression
, bạn sử dụng tương ứng $2
, $3
Redirect URL cũ sang URL mới
Redirect
/someoldarticle.html
sang /some/newarticle.html
NGINX:
rewrite ^/someoldarticle\.html /some/newarticle.html permanent;
Redirect domain cũ sang domain mới
Redirect
http://olddomain.com
và toàn bộ đường dẫn con sang domain mới http://newdomain.com
NGINX:
rewrite ^(.*) http://newdomain.com$1 permanent;
Redirect IP server sang domain bất kỳ
Mục đích khi truy cập vào IP server, thay vì hiển thị nội dung mặc định của Nginx, người dùng sẽ được tự động redirect đến một địa chỉ website nào đó, ví dụ
domain.com
.Bạn hãy mở file cấu hình domain chính, tìm dòng nào có nội dung là
listen 80 default_server;
thì thay bằng listen 80;
(xóa default_server). Tiếp theo, copy paste đoạn cấu hình dưới lên trên cùng file .conf
, khởi động lại Nginx là xong:
NGINX:
server {
listen 80 default_server;
server_name _;
rewrite ^(.*) http://domain.com$1 permanent;
}
Cài WordPress trong Sub-folder
Để chạy được WordPress ở thư mục con, bạn hãy thêm đoạn code sau vào bên trên
block location / { ... }
NGINX:
location /wordpress/ {
try_files $uri $uri/ /wordpress/index.php?$args;
}
Hiển thị nội dung thư mục
Nếu thư mục không có file index, khi truy cập bạn có thể gặp thông báo lỗi “403 Forbidden“, không hiển thị những file bên trong đó. Để cho phép người dùng xem được thư mục này, bạn hãy chỉnh lại
autoindex
là on
.
NGINX:
location / {
autoindex on;
}
off
để không hiển thị nội dung thư mục:
NGINX:
location / {
autoindex off;
}
Redirect link 404
Thông thường link 404 sẽ hiển thị thông báo lỗi của Nginx hoặc trang 404 của WordPress. Nếu bạn muốn hiển thị nội dung của trang chủ, có thể thêm đoạn code sau lên trước
block location / { ... }
NGINX:
error_page 404 /index.php;
404
. Nếu muốn header 200
thì bạn chuyển đoạn code thành: error_page 404 =200 /index.php;