Khác với Apache, Nginx không sử dụng file .htaccess nên khi bạn cần rewrite url sẽ phải convert qua rule của Nginx. Trong bài viết này, mình sẽ đưa ra một số ví dụ các rule của Nginx sử dụng để rewrite url, redirect và một số cấu hình cần thiết khác.
Khi sử dụng, bạn hãy thêm vào file cấu hình conf của tên miền, với HocVPS Script thì các file cấu hình này thường nằm trong thư mục /etc/nginx/conf.d/
Nội dung bài viết
Ngăn những site khác sử dụng hình ảnh
Redirect domain cũ sang domain mới
Redirect IP server sang domain bất kỳ
Canonical URLs
Đảm bảo website của bạn được search engine index một đường dẫn duy nhất.
www.mydomain.com -> mydomain.com
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.
server { server_name www.mydomain.com; rewrite ^(.*) $scheme://mydomain.com$1 permanent; }
mydomain.com -> www.mydomain.com
Redirect toàn bộ request từ mydomain.com sang www.mydomain.com, kèm theo cả đường dẫn và tham số phía sau url.
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.
# 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ỳ:
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:
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:
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.
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:
location ~* \.(gif|png|jpe?g)$ { valid_referers none blocked ~.google. ~.bing. ~.yahoo. .domain.com *.domain.com; if ($invalid_referer) { return 403; } }
Nếu bạn muốn chặn sử dụng ảnh trong 1 thư mục cụ thể:
location /wp-content/ { valid_referers none blocked ~.google. ~.bing. ~.yahoo. .domain.com *.domain.com; if ($invalid_referer) { return 403; } }
Nếu bạn muốn thay vì báo lỗi mà hiển thị một hình ảnh khác, hãy sử dụng code bên dưới:
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; } }
Lưu ý: Nếu trong cấu hình Nginx của website đã tồn tại đoạn cấu hình riêng về file hình ảnh/video thì bạn phải gộp chung với đoạn cấu hình đó chứ không tách riêng rẽ. Ví dụ đối với HocVPS Script:
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
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
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
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
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:
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 đằng trước block location / { ... }
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
.
location / { autoindex on; }
hoặc chỉnh lại là off
để không hiển thị nội dung thư mục:
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 / { ... }
error_page 404 /index.php;
Nội dung index.php sẽ xuất hiện, tuy nhiên header status vẫn là 404. Nếu muốn header 200 thì bạn chuyển đoạn code thành: error_page 404 =200 /index.php;
Ngoài ra có một số tool tự động convert sang rule Nginx bạn có thể tham khảo thêm như:
ad chuyển giúp mình sang nginx với, mình dùng mấy tool kia nhưng không được
https://pastebin.com/YjLDRvzf
cảm ơn
Hello bạn,
Mình có vấn đề như này bạn hỗ trợ với
Mình có 1 lượng user truy cập vào từ social nên nó sẽ có query-string “fbclid=nhiều-ký-tự”
Nên website mình đôi khi bị đơ do có quá nhiều truy cập khiến CPU phải xử lý
Không biết có cách nào khiến các query-string đó biến mất không?
Đây là file conf.d của mình
server {
listen 80;
server_name domain.com http://www.domain.com;
return 301 https://domain.com$request_uri;
}
server {
listen 443 ssl http2;
server_name http://www.domain.com;
return 301 https://domain.com$request_uri;
ssl_certificate /etc/nginx/paidssl/domain.com/domain.com.crt;
ssl_certificate_key /etc/nginx/paidssl/domain.com/domain.com.key;
#ssl_trusted_certificate /etc/nginx/paidssl/domain.com/domain.com.ca;
}
server {
listen 443 ssl http2;
ssl_certificate /etc/nginx/paidssl/domain.com/domain.com.crt;
ssl_certificate_key /etc/nginx/paidssl/domain.com/domain.com.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_prefer_server_ciphers on;
include /etc/nginx/conf/ssl-protocol-cipher.conf;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 30s;
#ssl_trusted_certificate /etc/nginx/paidssl/domain.com/domain.com.ca;
ssl_buffer_size 1400;
ssl_session_tickets on;
add_header Strict-Transport-Security max-age=31536000;
access_log off;
access_log /home/domain.com/logs/access_log;
error_log off;
error_log /home/domain.com/logs/error.log;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection “1; mode=block”;
root /home/domain.com/public_html/public;
include /etc/nginx/conf/ddos2.conf;
index index.php index.html index.htm;
server_name domain.com;
#///////////////////////////////////////////////////////
# Ban chi co the chon 1 trong 4 rule AAA, BBB, CCC, DDD hoac EEE
# Ban nen comment cac rule khong su dung thay vi xoa chung vi neu ban su dung wordpress blog
# Cac dong nay can thiet cho cac chuc nang trong WordPress Blog Tools cua VPSSIM
# Thuat ngu:
# Comment – Them dau # vao truoc
# Uncomment – Bo dau # o truoc cau.
#///////////////////////////////////////////////////////
#Chay tat ca cac website (WordPress, Xenforo, Joomla, Phpbb …. ). neu ban su dung rule cua ban,comment dong duoi (them dau # vao truoc) (AAA)
#include /etc/nginx/conf/all.conf;
#Neu ban su dung rule cua minh, comment rule o tren. Sau do uncoment (bo dau # ba dong duoi) sau do them rule vao giua. (BBB)
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# Rule cho wordpress + Plugin wp super cache. Neu ban su dung wordpress va wp super cache, uncomment dong duoi va comment dong AAA phia tren. (CCC)
#include /etc/nginx/conf/supercache.conf;
# Rule cho wordpress + Plugin W3 Total Cache. Neu ban su dung wordpress va W3 Total, uncomment dong duoi va comment dong AAA phia tren. (DDD)
#include /etc/nginx/conf/w3total.conf;
# Rule cho wordpress + WP-Rocket. Neu ban su dung wordpress va WP-Rocket, uncomment dong duoi va comment dong AAA phia tren. (EEE)
#include /etc/nginx/conf/wprocket.conf;
# Config Cache Static Files
include /etc/nginx/conf/staticfiles.conf;
#Tang bao mat security, chong sql injection ….(uncoment neu ban muon su dung). Boi vi mot so code website khong su dung duoc voi rule nay, nen mac dinh VPSSIM de tat.
#Khong duoc xoa dong duoi, neu xoa VPSSIM se khong hoat dong !
#include /etc/nginx/conf/block.conf;
# Error Page
#error_page 403 /errorpage_html/403.html;
#error_page 404 /errorpage_html/404.html;
#error_page 405 /errorpage_html/405.html;
#error_page 502 /errorpage_html/502.html;
#error_page 503 /errorpage_html/503.html;
#error_page 504 /errorpage_html/504.html;
#location ^~ /errorpage_html/ {
# internal;
# root /home/domain.com;
# access_log off;
#}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_connect_timeout 250;
fastcgi_send_timeout 250;
fastcgi_read_timeout 250;
fastcgi_buffer_size 256k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;
fastcgi_param SCRIPT_FILENAME /home/domain.com/public_html/public$fastcgi_script_name;
}
#include /etc/nginx/conf/phpstatus.conf;
include /etc/nginx/conf/drop.conf;
}
Mình có chuyển hướng Page của worpress từ /achive/ sang /achive-list/ đoạn mình thêm vào dưới đây mà toàn lỗi 404 nhỉ. service nginx restart các kiểu rồi vẫn thế.
rewrite ^/archive/ http://$server_name/achive-list/ permanent;
Còn 1 đoạn category thì vẫn chạy bình thường.
rewrite ^/giong-meo/(.*)/ http://$server_name/giong-meo-lai/$1/ permanent;
Mình muốn chuyển hướng những link cũ có dạng: domain.com/blog/* về domain.com/* thì dùng lệnh nào nhĩ. Bạn nào giúp mình với.
Mình làm bảo vệ hình ảnh rồi mà vẫn thấy website khác dùng được hình của mình nhỉ
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. ~.yandex. mydomain.com *.mydomain.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;
}
Tối ưu Browser Caching
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;
}
Nó vẫn báo là chưa caching bạn ơi
Cho mình hỏi là chỉ cần copy rule bỏ vào cuối file
/etc/nginx/conf.d/
là được phải không nhỉ?Thường là bỏ vào Nginx Conf của domain bạn cần chỉnh sửa nhé
Có cần phải lồng nó vào
server {...}
không bạn nhỉ?Có cần lồng vào server {…} không bạn nhỉ? Sao mình thử thêm mấy cái rule từ file htaccess cũ (đã convert sang nginx) của mình vào mà ko được 🙁
Có bạn nhé, đặt ở sau đoạn server_name
Sao mình redirect link 404 sang trang 404 của mình (hiện tại nó chuyển sang trang chủ) bằng cách thêm
error_page 404 /404/index.php;
vào trước blocklocation / {
trong filetry_files $uri $uri/ /index.php?$args;
}
/etc/nginx/conf.d/domain.com.conf
mà nó vẫn redirect về trang chủ vậy nhỉ 🙁 đã restart nginx mà vẫn vậy 🙁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 đằng trước block location / { … }
location /wordpress/ {
try_files $uri $uri/ /wordpress/index.php?$args;
}
Em có thêm đoạn này. Web chạy ok rồi. Nhưng cứ vào wp-admin 1 trong 2 location thì bị many redirect. Còn trang web bài viết vẫn bình thường. Nếu đổi dòng sub folder lên trước thì domain chính bị và ngược lại.
Cho em hỏi làm sao để fix được nó ạ. Em có dùng cloudflare để chạy SSL
Bạn tắt SSL của Cloudflare và thử lại nhé.
bạn luân cho mình hỏi xí ah
mình gắn tên miền vào google site mình muốn bỏ www thì mình phải làm cách nào ah
Ý bạn là trên Google Search Console?
Chào bạn!
Mình muốn hỏi Website mình muốn redirect tất cả link bài viết: domain.com/bai-viet-1.html/amp
thành domain.com/bai-viet-1.html thì mình sử dụng như thế nào bạn
Vì mình có dùng Plugins AMP và bây giờ muốn gỡ Plugin đó nhưng nó sẽ lỗi link khi người dùng tìm kiếm từ di động vào.
Rất mong nhận được giúp đỡ từ bạn
Cảm ơn bạn !
Bạn thêm phần này vào block của document_root nhé
location ~ /amp/$ {
rewrite ^(.*/)amp/$ $1 permanent;
}
Rồi restart lại Nginx
Cho mình hỏi tí ạ:
Mình cài hocvps trỏ subdomain vào VPS centos7 nếu tạo web trên nginx trên thư public_html của subdomain tương ứng trên VPS centos7 thì đã chạy ok.
Vấn đề ở đây là mình còn con VPS winserver chạy 1 web ở cổng 8080 ở địa chỉ ip khác. Giờ mình muốn config nginx thế nào để khi gõ trình duyệt subdomain.domain.com thì chạy cái web trên được.
Mong được chỉ giúp!
Thanks!
Vậy bạn cần thiết lập Nginx làm Reserve Proxy
https://www.google.com/search?q=reserve+proxy+nginx
Cảm ơn bạn!
File nignx của mình sao không chạy được 404.
Ví dụ mình có link: domain.com/abc.html mình gỏ thêm ví dụ domain.com/abc.html/ thì nó sẽ chạy đúng về 404 mình cần còn nếu mình gỏ domain.com/abc/abcjfjfj… thì nó không về 404 mà làm cho web lỗi giao diện luôn nếu gê chuột vào các link trên web thì sẽ chạy với đường dần đó nối tiếp như là domain.com/abc/linktiep…. bạn nào biết cách xin chỉ giúp cách khắc phục
Khi mình dùng
location = / {
deny 1.2.3.4;
}
thì chỉ chặn truy cập trang chủ, các trang con vẫn vào bt, có cách nào chặn hết không cho truy cập trang con luôn không ạ.
Cám ơn Ad.
Bạn đừng đặt vào trong location nữa
em có dùng HocVPS Script. Em muốn chặn tất cả các ip truy cập ngoại trừ 1 số ip cho phép truy cập đến link https://trasau.com/ban-the-cao.html thì cấu hình như thế nào ạ?
Em xin cám ơn ạ!
Bạn xem phần giới hạn IP truy cập nhé
location ~ ^/ban-the-cao.html
{
}
Mình cài hocvps script, khi chạy lệnh service nginx restart nó ra kết quả như vầy: Redirecting to /bin/systemctl restart nginx.service. Lỗi này là lỗi gì vậy ad?
Không lỗi gì cả. Đó là của CentOS 7. Hệ thống chuyển lệnh từ service sang systemctl
Làm sao để thêm subdomain bất kỳ vào nginx vậy mọi người, nôm na là wildcard dns.
Ở tên miền mình đã trỏ A record * và ip của vps
Khi vào bằng subdomain bất kỳ dạng abc.maindomain.com thì nó hiện lỗi “Trang này hiện không hoạt động”. nhưng khi ping subdomain đó vẫn ra ip của vps.
Thanks!
Bạn cấu hình nginx thì mục webserver bạn để
*.abc.com
là nó nhận thôiNó sẽ giống phần này
https://hocvps.com/kich-hoat-wordpress-multisite/#3.1._Cấu_hình_Nginx_duy_nhất_cho_toàn_bộ_hệ_thống_WP_Multisite.
Của em vẫn không hoạt động là do tại sao nhỉ e cover dạng ntn
# nginx configuration
location /acc {
rewrite ^/acc-([0-9]+)$ /view.php?id=$1;
rewrite ^/acc-([0-9]+)/$ /view.php?id=$1;
}
location = /user/login {
rewrite ^(.*)$ /login.php;
rewrite ^(.*)$ /login.php;
}
location = /user/login/index.php {
rewrite ^(.*)$ /login.php;
}
location = /user/logout {
rewrite ^(.*)$ /logout.php;
rewrite ^(.*)$ /logout.php;
}
location /lich {
rewrite ^/lich-su-nap$ /cardhistory.php;
rewrite ^/lich-su-nap/$ /cardhistory.php;
rewrite ^/lich-su-mua$ /history.php;
rewrite ^/lich-su-mua/$ /history.php;
}
location /nap {
rewrite ^/nap-tien$ /napthe.php;
rewrite ^/nap-tien/$ /napthe.php;
}
location /huong {
rewrite ^/huong-dan-mua-acc/$ /huongdanmuacc.php;
rewrite ^/huong-dan-mua-acc$ /huongdanmuacc.php;
rewrite ^/huong-dan-bao-mat-tk$ /huongdanbaomat.php;
rewrite ^/huong-dan-bao-mat-tk/$ /huongdanbaomat.php;
}
location = /login.html {
rewrite ^(.*)$ /login.php;
}
location = /user {
rewrite ^(.*)$ /fbconfig.php;
rewrite ^(.*)$ /fbconfig.php;
}
Hi
Mình đang cài cái mautic để gửi mail, nó có 1 file gọi là mtc.js để tracking, ở đường dẫn https://mt.fususu.com/mtc.js và được tự động tạo ra qua php chứ không phải là một file cố định. Tức là trên vps thì file đó sẽ không thấy, nhưng truy cập vào thì vẫn sẽ được. Song phải config nginx rule thế nào đó… (cấu hình của mình ở đây: :https://www.mautic.org/community/index.php/8458-form-won-t-show-via-javascrip-404-not-found/p1#p26181)
Hình như hôm trước mình cài rồi đúng không nhỉ?
Hôm trước nhờ bạn là fix cái vụ cpu cao, giờ mình xử dc rồi, do xài mấy plugin nặng.
Còn cái này là mình cài mới tinh trên một vps có sử dụng hocvps script. Song config cho thằng Mautic này mãi ko xong vụ này nên không track mail open được ^^! Cái lỗi mình gặp nhiều người cũng gặp ở trên forum của họ. Mà cái Mautic này gửi mail hay lắm, free mà chất, Luân nghiên cứ xem 🙂
Mình muốn redirect tất cả các file ảnh bị lỗi 404 (không tồn tại)
thành 1 file default duy nhất, mình ném cái dode search được trên google này vào vhost mà ko dc 🙁
server {
listen 443 ssl http2;
…
location ~* \.(png|jpg|gif)$ {
try_files $uri $uri/ https://fususu.com/default.png;
}
…
}
1. Nhìn rule bạn thì xử lý toàn bộ ảnh rồi đâu phải mỗi ảnh lỗi?
2. Trong Nginx Conf của bạn có thể còn đoạn khác cũng quy định về png/jpg/gif. Khi đó, bạn phải gộp không nó xung đột
Vậy bạn gợi ý cho mình với… đây là nội dung conf của mình.
https://pastebin.com/HeEnYfK8
Hiện tại ảnh lỗi của bạn hiển thị như thế nào? Nó là thành 404 Error chứ đâu phải show cái gì
Đúng rồi, hiện tại là nó thành 404. Mình muốn redirect nó thành cái cái ảnh 1 pixel ở https://fususu.com/default.png
Tức là vd gõ một link ảnh bất kỳ https://fususu.com/abcekaax.png hoặc .jpg gì đó mà ko tìm thấy, lỗi 404, thì nó sẽ tự động chuyển thành https://fususu.com/default.png ^^!
Thế thì bạn dùng bên Redirect Link 404 ý, phần cuối trong bài viết này
sau khi thêm vào nó gây lỗi thế này Job for nginx.service failed because the control process exited with error code. See “systemctl status nginx.service” and “journalctl -xe” for details. mình dùng centon 7
ystemctl status nginx.service -l
và nginx -t hiện kết quả gì bạnMinh nghi mình đặt sai bạn xem mình đặt code phía dưới đúng chưa @@ up hình đấy sai gì sửa mình với @@ cho domain là mình có sửa lại của mình nha
https://3.bp.blogspot.com/-njyysQPb_IE/WXa5R6JDhZI/AAAAAAAFm_k/w9laAPv9btYESzhpp86nNwd6tb5-YVPAQCLcBGAs/s1600/f.jpg
Bạn chạy lệnh check tình trạng Nginx sẽ giúp báo bạn sai ở dòng nào trong Conf nhé, khi đó bạn tự xem sửa lại chứ code gốc của bạn mình không rõ
mình chỉ thêm dòng
location ~ .(gif|png|jpe?g)$ {
valid_referers none blocked .xxx.com;
if ($invalid_referer) {
return 403;
}
}
vào là bị lỗi khởi động lại bị vậy
Nên mình bỏ ra lưu lại khởi động lại thì bt à chỉ có cái là thêm vào bị vậy mà chẳng biết thêm sao cho nó đúng theo ngix nó báo @@
tìm trên mạng có đứa bị nó nói
Nguyên nhân là tại dòng này, mình không để ý đến nói:
#include /etc/nginx/conf/all.conf; mà chẳng hiểu nghĩa là gì 🙁 ai rành mới biết
1. Nginx Conf bạn có dòng
#include /etc/nginx/conf/all.conf
này đâu mà lỗi do nó được. Chưa kể, việc#
thì Nginx đã không đọc dòng đó rồi2. Như mình đã nói, sai gì Nginx sẽ báo đó.
Job for nginx.service failed because the control process exited with error code. See “systemctl status nginx.service” and “journalctl -xe” for details
Bạn gg dịch cũng hiểu mà, chạy
systemctl status nginx.service -l
để thêm thông tinmình chạy
systemctl status nginx.service -l
● nginx.service – nginx – high performance web server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2017-07-25 10:55:38 +07; 53min ago
Docs: http://nginx.org/en/docs/
Process: 2784 ExecStop=/bin/kill -s TERM $MAINPID (code=exited, status=0/SUCCESS)
Process: 2822 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Process: 2820 ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 2824 (nginx)
CGroup: /system.slice/nginx.service
├─2824 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.con
├─2825 nginx: worker process
├─2826 nginx: worker process
└─2827 nginx: cache manager process
Jul 25 10:55:38 vultr.guest systemd[1]: Starting nginx – high performance web server…
Jul 25 10:55:38 vultr.guest nginx[2820]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Jul 25 10:55:38 vultr.guest nginx[2820]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Jul 25 10:55:38 vultr.guest systemd[1]: Started nginx – high performance web server.
nhưng không hiểu là sai gì vì thêm vào thế 😀 quan trọng là mình không biết thêm chỗ nào hay thế nào cho đúng 😀
nginx: configuration file /etc/nginx/nginx.conf test is successful
thì hiện tại có sai gì đâu. Nginx chạy hoàn toàn bình thườngđơn giản là mình không biết thêm sao cho nó đúng
Bạn thêm vào Nginx Conf của domain, phần block quy định root web. Bạn paste toàn bộ file ra mình xem https://pastebin.com/
toàn bộ ngix trong /etc/nginx
https://pastebin.com/MPBii3mw
à hỏi được rồi bạn ơi 😀 cảm ơn
Mình đã làm theo hướng dẫn bài https://hocvps.com/rule-nginx/ nhưng không hiểu sao lại không chạy được. line 79
http://imgur.com/a/Nj0Vm
mình đã thử sửa lại nhưng vẫn chạy không được
http://imgur.com/a/w1O4z
đã lưu đúng đường dẫn
http://imgur.com/a/NnJc0
nhưng sau khi chạy vẫn báo lỗi “No input file specified” mặc dù đường dẫn file rewrite đúng. Mình sử dụng vpssim. Mong bạn giúp đỡ
Bạn muốn rewrite /ohs.* thành /ohs.php ?
mình rewrite ohs.php thành ohs
Thế bạn rewrite ngược rồi còn đâu
Mình sơ suất quá, cảm ơn bạn. Mình đã sửa lại
http://imgur.com/a/xdYND
giờ vào link /ohs.php thì chuyển sang /ohs nhưng nó lại không hiện nội dung của file ohs.php và báo lỗi “No input file specified”
Bạn dùng location /ohs rewrite sang /ohs.php mà path lúc đó là /ohs/ohs.php thì báo lỗi không thấy file là đúng
Bạn thử
rewrite ^/ovh$ /ovh.php last;
xem, không cần đặt trong block locationSao vẫn không được bạn ơi. Mình đã thử xóa cache rồi
Mình vừa restart lại server thì chạy rồi. Cảm ơn nhiều bạn nha :))
1) vậy làm sao e biết đc file config của domain nào sẽ có tên là gì? hay nó sẽ có cấu trúc là domain.conf??
3) tức là e vẫn có thể sử dụng file htaccess đó nhưng phải convert trc? có bài hướng dẫn convert ko em xem với
e đang chạy folder con kiểu domain/folder, vào được home nhưng khi ấn vào bài viết lại ghi “file not found”.
-> vậy lỗi này có phải là do file htacess chưa được convert ko?
-> hoặc là e thấy bảo là wp muốn chạy ở folder con phải config?
demo lỗi: http://ducmu.info/blog
1) có vẻ đúng cấu trúc như thế thật, e đánh nano /etc/nginx/conf.d/ducmu.info.conf
nó đã ra file config của domain ducmu.info
3) e gọi được ra file đó rồi e sửa theo hướng dẫn thành như này, để chạy ở folder ducmu.info/blog nhưng vẫn lỗi khi ấn vào các link bài viết ạ 🙁
#
# ducmu.info configuration
#
server {
listen 80;
server_name ducmu.info;
location / {
root /home/ducmu.info/public_html;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?q=$uri&$args;
}
location /blog/ {
try_files $uri $uri/ /blog/index.php?$args;
}
error_page 404 /404.html;
location = /404.html {
root /home/ducmu.info/public_html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /home/ducmu.info/public_html;
}
# pass the PHP scripts to FastCGI server
#
location ~ \.php$ {
root /home/ducmu.info/public_html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
1. Do quy định từng hệ thống. Hoặc nếu hệ thống bạn tự thiết lập thì file Conf bạn hoàn toàn có thể để tên như thế nào cũng được, cho tiện quản lý
3. File Nginx Conf của bạn không ổn. Quá nhiều root web và block không đóng mở trong block tổng 80 {}
Ví dụ nếu cấu hình đơn giản thì chỉ là: https://pastebin.com/0wApDMtL
trời ơi sau khi mà thay đoạn code của a vào file config domain thì
1) em dùng lệnh service nginx restart để khởi động lại nginx
nhưng mà sau đó web của e die hết ạ 🙁
IP: http://45.32.120.170
demo web: http://ducmu.info/blog/
e cuống quá dùng lệnh sudo yum install nginx để cài lại nginx nhưng vẫn die ạ, e phải làm sao giờ??
2) ngoài ra e còn bị lỗi file manager của hocvps ko giải nén được file, e định sẽ cài lại hocvps thì e cứ dùng lệnh cài đè lại hay e phải xóa toàn bộ vps đi làm từ đầu ạ?
3) mà chạy domain ở sub domain theo bài này nói là dạng sub.domain hay là dạng domain/folder đấy ạ??
cái e cần là dạng domain/folder chạy đc ý
à cái ducmu.info e đổi lại về ip shared host rồi
demo lỗi ở vps là: http://huongmadam.com/
1. Lỗi thông báo như thế này không phán đoán được rồi bạn à. Bạn check service nginx status với nginx -t. Hoặc sau bạn sửa Nginx Conf thì cứ backup trước. Gặp lỗi thì bạn restore lại Conf cũ là được.
2. Bạn reinstall VPS để cài lại từ đầu nhé. Giải nén sau bạn cứ dùng lệnh trên SSH nhé.
3. Trong bài viết đề cập rõ ràng là Chạy WordPress ở Sub-folder nhé bạn