15、Nginx – rewrite重写模块-生产环境实例
版权声明:原创作品,谢绝转载!否则将追究法律责任。 ————— 作者:kirin
生产环境实例:
(1)根据用户浏览器请求头中携带的语言调度到不同的页面
server {
listen 80;
server_name localhost;
root /test;
if ($http_accept_language ~* "zh|zh-cn" ) {
set $language zh;
}
if ($http_accept_language ~* "en|en-us" ) {
set $language en;
}
rewrite_log on;
rewrite ^/$ /$language last;
#rewrite ^([^\.]*)$ /$language last;
location / {
index index.html;
}
}
(2)用户通过手机设备访问test.cp.com,跳转至test.cp.com/m
server {
listen 80;
server_name cp.test.com;
root /test;
rewrite_log on;
if ($http_user_agent ~* 'android|iphone|ipad') {
rewrite ^/$ /phone last;
}
location / {
index index.html;
}
}
(3)用户通过手机设备访问test.cp.com,跳转至phone.cp.com
server {
listen 80;
server_name cp.test.com;
root /test;
rewrite_log on;
if ($http_user_agent ~* 'android|iphone|ipad') {
rewrite ^/$ http://m.oldxu.com redirect;
}
location / {
index index.html;
}
}
(4)用户访问网站时将http协议强制跳转到https
server {
listen 80;
server_name test.cp.com;
rewrite_log on;
rewrite ^(.*)$ https://$server_name$1 redirect;
#return 302 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name test.cp.com;
root /test;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;
location / {
index index.html;
}
}
(5)网站在维护过程中,希望用户的访问都重定向至一个维护页面。
server {
listen 80;
server_name test.cp.com;
root /test;
rewrite_log on;
rewrite ^(.*)$ /wh.html break;
location / {
index index.html;
}
}
(6)当服务器遇到 403 404 502 等状态码时,自动跳转到维护页面。
server {
listen 80;
server_name test.cp.com;
root /test;
rewrite_log on;
location / {
index index.html;
}
error_page 403 404 502 = @error;
location @error {
rewrite ^(.*)$ /wh.html break;
}
}
(7)网站在停机维护时,除指定的IP能够正常访问,其它的IP全部跳转到维护页面。
server {
listen 80;
server_name test.cp.com;
root /test;
rewrite_log on;
#设定一个变量$ip初始值为0。
set $ip 0;
#判断来源IP是否在允许列表里,如果在则设定$ip变量为1。
if ($remote_addr ~ "10.0.0.1|10.0.0.2") {
set $ip 1;
}
#判断$ip变量是否等于0,如果等于直接跳转到维护页面。
if ($ip = 0) {
rewrite ^(.*)$ /wh.html break;
}
location / {
index index.html;
}
}
当然这里只是使用rewrite方式演示,实际使用访问限制模块更加方便高效。
server {
listen 80;
server_name test.cp.com;
root /test;
rewrite_log on;
location / {
index index.html;
allow 10.0.0.1;
allow 10.0.0.2;
deny all;
}
#访问受限会返回403状态码
error_page 403 = @error;
location @error {
rewrite ^(.*)$ /wh.html break;
}
(8)网站后台/admin,只允许10.0.0.1访问,其他的IP访问直接强制跳转至首页。
server {
listen 80;
server_name test.cp.com;
root /test;
rewrite_log on;
location / {
index index.html;
}
location /admin {
index index.html;
#设定一个变量$ip初始值为0。
set $ip 0;
#判断来源IP是否在允许列表里,如果在则设定$ip变量为1。
if ($remote_addr ~ "10.0.0.1") {
set $ip 1;
}
#判断$ip变量是否等于0,如果等于直接跳转到维护页面。
if ($ip = 0) {
return 302 http://$server_name;
}
}
}
本文来自博客园,作者:kirin(麒麟),转载请注明原文链接:https://www.cnblogs.com/kirin365/articles/16137287.html