湖南企业网站制作公司,wordpress文章在新窗口打开,长沙做旅游网站公司,网站建设公司盈利nginx测试rewrite 
last :相当于 Apache 里的(L)标记#xff0c;表示完成rewrite 匹配;
break: 本条规则匹配完成后#xff0c;终止匹配#xff0c;不再匹配后面的规则。
# 其中last 和 break 用来实现 URL 重写时#xff0c;浏览器地址栏URL 地址不变
redirect: 返回 302 …nginx测试rewrite 
last :相当于 Apache 里的(L)标记表示完成rewrite 匹配;
break: 本条规则匹配完成后终止匹配不再匹配后面的规则。
# 其中last 和 break 用来实现 URL 重写时浏览器地址栏URL 地址不变
redirect: 返回 302 临时重定向浏览器地址会显示跳转后的 URL 地址。
permanent: 返回 301永久重定向浏览器地址栏会显示跳转后的URL 地址
#不配置将显示304[rootnode1 ~]# yum -y install gcc make pcre-devel openssl-devel
[rootnode1 ~]# tar xf nginx-1.22.1.tar.gz
[rootnode1 ~]# cd nginx-1.22.1/
[rootnode1 nginx-1.22.1]# ./configure  --prefix/usr/local/nginx  --usernginx  --with-http_ssl_module
[rootnode1 nginx-1.22.1]#  make  make install
[rootnode1 nginx-1.22.1]# useradd nginx -s /sbin/nologin
[rootnode1 nginx-1.22.1]# /usr/local/nginx/sbin/nginx[rootnode1 nginx-1.22.1]# cd /usr/local/nginx/
[rootnode1 nginx]# mkdir html/static
[rootnode1 nginx]# echo html/static/index.htmlhtml/static/index.html
[rootnode1 nginx]# echo html/static/node1.htmlhtml/static/node1.html#访问显示
http://www.myweb.com/static/ --  html/static/index.html
http://www.myweb.com/static/test.html --  html/static/test.html
http://www.myweb.com/forum.php --  404 Not Foundlast :相当于 Apache 里的L)标记表示完成rewrite 匹配; 
break: 本条规则匹配完成后终止匹配不再匹配后面的规则。 
redirect: 返回 302 临时重定向浏览器地址会显示跳转后的URL 地址。 
permanent: 返回301永久重定向浏览器地址栏会显示跳转后的 URL 地址。 
其中 last 和 break 用来实现 URL 重写时浏览器地址栏URL 地址不变。 
#访问  http://www.myweb.com/forum.php  -跳转-  html/static/test.htmlserver {listen       80;server_name www.myweb.com;# 本地目录重写# 状态码304 地址栏不变化  http://www.myweb.com/forum.phprewrite ^/forum.php$ /static/node1.html last;  # 状态码304 地址栏不变化  http://www.myweb.com/forum.phprewrite ^/forum.php$ /static/node1.html break;  # 状态码301 地址栏变为http://www.myweb.com/static/test.htmlrewrite ^/forum.php$ /static/test.html permanent;# 状态码302 地址栏变为http://www.myweb.com/static/test.htmlrewrite ^/forum.php$ http://www.myweb.com/static/test.html last;#本站 url跳转  url地址栏变化 last、break、redirect都是302# 状态码302 地址栏变为http://www.myweb.com/static/test.htmlrewrite ^/forum.php$ http://www.myweb.com/static/test.html last;#forum.php状态码301 地址栏变为http://www.myweb.com/static/test.htmlrewrite ^/forum.php$ http://www.myweb.com/static/test.html permanent;# 跳百度# forum.php状态码302 地址栏变为 http://www.baidu.comrewrite ^/forum.php$ http://www.baidu.com break; # last、redirect也是302#forum.php状态码301 地址栏变为 http://www.baidu.comrewrite ^/forum.php$ http://www.baidu.com permanent;location / {...浏览器Disable cache 访问location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {root html; # 绝对路径也可以完成访问   /usr/local/nginx/html;}[rootnode1 baidu]# wget -r -x http://fjxplz.com/1004.html[rootnode1 html] mkdir weihu
[rootnode1 html]# echo   维护中...weihu/index.html#  http://www.myweb.com   维护
server {listen       80;server_name www.myweb.com;# 3、最终还是跳到维护页面rewrite ^/forum.php$ http://www.myweb.com/static/test.html permanent  ;# 2、加了rewrite后跳转跟下面的location的上下顺序影响rewrite ^/(.*)$ /weihu/index.html last;  # 所有页都跳维护页rewrite ^/$ /weihu/index.html last;   # 根页跳到维护页#rewrite ^/(.*)$ /weihu/index.html last;# 1、不加上面的rewrite时默认首页 location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {#    location / {   与上面一样root html; # 绝对路径也可以完成访问   /usr/local/nginx/html;}        # 3、最终还是跳到维护页面http://www.myweb.com/forum.php--》static  --》2 /weihu/
192.168.1.11 - -  GET /forum.php HTTP/1.1 301 169 - Wget/1.14 (linux-gnu)
192.168.1.11 - -  GET /static/test.html HTTP/1.1 200 13 - Wget/1.14 (linux-gnu) 
server {listen       80;server_name www.myweb.com;# 一直会301跳转看日志或者wget看下过程rewrite ^/(.*)$ /weihu/index.html permanent;  # wget下或者看日志# 传递参数rewrite ^/(.*)$  http://www.baidu.com/$1 permanent;# myweb.com 跳转到baiduif ($host  myweb.com) {rewrite ^/(.*)$  http://www.myweb.com/$1 permanent;} 
wget 查看 
[rootnode1 conf]# wget myweb.com
--2023-10-21 17:32:25--  http://myweb.com/
Resolving myweb.com (myweb.com)... 192.168.1.11
Connecting to myweb.com (myweb.com)|192.168.1.11|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently  # permanent
Location: http://www.myweb.com/ [following]
--2023-10-21 17:32:25--  http://www.myweb.com/	# 跳转后的 
Resolving www.myweb.com (www.myweb.com)... 192.168.1.11
Reusing existing connection to myweb.com:80.
HTTP request sent, awaiting response... 200 OK
Length: 13 [text/html]
Saving to: ‘index.html.2’# myweb.com 跳转到www.myweb.comif ($host  myweb.com) {rewrite ^/(.*)$  http://www.myweb.com/$1 last; # last不是上面的permanent}
[rootnode1 conf]# wget myweb.com
--2023-10-21 17:30:57--  http://myweb.com/
Resolving myweb.com (myweb.com)... 192.168.1.11
Connecting to myweb.com (myweb.com)|192.168.1.11|:80... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily #302  last
Location: http://www.myweb.com/ [following]
--2023-10-21 17:30:57--  http://www.myweb.com/	# 跳转后的   
Resolving www.myweb.com (www.myweb.com)... 192.168.1.11
Reusing existing connection to myweb.com:80.
HTTP request sent, awaiting response... 200 OK
Length: 13 [text/html]
Saving to: ‘index.html.1’ 
多种域名跳转 
# 多种域名跳转if ($host ! myweb.com){rewrite ^/(.*)s http://www.myweb.com/$1 permanent;}
# 不存在的页面跳转    if ( !-e $request_filename){rewrite ^/(.*)$ /weihu/index.html last;}# 火狐浏览器跳转   if ($http_user_agent ~ firefox) { rewrite  ^/index.html$  /firefox/index.html;}NginxRewrite跳转正则表达式6个生产案列内容过于真实 
https://blog.csdn.net/weixin_48190891/article/details/108532802 
Nginx rewrite常用全局变量详细介绍 
https://blog.csdn.net/Blue92120/article/details/129003292 
upstream lmsManagerAuth-backend {
server 7.180.171.42:8100 max_fails3 fail_timeout10s;
}location ~ ^/edx/lmsManagerAuth/api/datacenter/.*{rewrite /edx/lmsManagerAuth/(.*)  /$1 break;  #截取保留重写为api/datacenter/.*proxy_pass http://lmsManagerAuth-backend;www.myweb.com.zh		www.myweb.com/zh
www.myweb.com.en		www.myweb.com/en在原来的配置文件/usr/local/nginx/conf/nginx.conf的http{}内末尾处加一句
include /usr/local/nginx/conf.d/*.conf;[rootnode1 nginx]# mkdir -p /usr/local/nginx/conf.d/
[rootnode1 nginx]# vim conf.d/www.myng.com.conf
server {listen 80;server_name www.myng.com;location / {root /code;index index.html;
}
[rootnode1 nginx]# mkdir -p /code/{zh,en}[rootnode1 nginx]# echo  zh/code/zh/index.html
[rootnode1 nginx]# echo  en/code/en/index.html
[rootnode1 nginx]# echo code/code/index.html
[rootnode1 html]# curl  www.myng.com
code
[rootnode1 html]# curl  www.myng.com/en/
en
[rootnode1 html]# curl  www.myng.com/zh/   #浏览器里默认加/ 
zhserver {listen 80;server_name www.myng.com.zh  www.myng.com.en;root /code;index index.html;location / {if ($http_host ~* zh){   #$http_host 请求的host的#$http_accept_language  浏览器请求头里的语言标识#$http_user_agent  ~* iphone|ipad|androaid   基于agentset $language zh;}if ($http_host ~* en){set $language en;}  rewrite ^/$ http://www.myng.com/$language redirect;}http://www.myng.com.zh/     --跳转--  http://www.myng.com/zh/curl -Lv 
[rootnode1 html]# curl -Lv  www.myng.com.zh    #会自动重定向后边指定的网址
* About to connect() to www.myng.com.zh port 80 (#0)
*   Trying 192.168.1.11...
* Connected to www.myng.com.zh (192.168.1.11) port 80 (#0)GET / HTTP/1.1User-Agent: curl/7.29.0Host: www.myng.com.zhAccept: */*HTTP/1.1 302 Moved TemporarilyServer: nginx/1.22.1Date: Sun, 22 Oct 2023 12:53:43 GMTContent-Type: text/htmlContent-Length: 145Connection: keep-aliveLocation: http://www.myng.com/zh* Ignoring the response-body
* Connection #0 to host www.myng.com.zh left intact
* Issue another request to this URL: http://www.myng.com/zh
* About to connect() to www.myng.com port 80 (#1)
*   Trying 192.168.1.11...
* Connected to www.myng.com (192.168.1.11) port 80 (#1)GET /zh HTTP/1.1User-Agent: curl/7.29.0Host: www.myng.comAccept: */*HTTP/1.1 301 Moved PermanentlyServer: nginx/1.22.1Date: Sun, 22 Oct 2023 12:53:43 GMTContent-Type: text/htmlContent-Length: 169Location: http://www.myng.com/zh/Connection: keep-alive* Ignoring the response-body
* Connection #1 to host www.myng.com left intact
* Issue another request to this URL: http://www.myng.com/zh/
* Found bundle for host www.myng.com: 0x2014450
* Re-using existing connection! (#1) with host www.myng.com
* Connected to www.myng.com (192.168.1.11) port 80 (#1)GET /zh/ HTTP/1.1User-Agent: curl/7.29.0Host: www.myng.comAccept: */*HTTP/1.1 200 OKServer: nginx/1.22.1Date: Sun, 22 Oct 2023 12:53:43 GMTContent-Type: text/htmlContent-Length: 3Last-Modified: Sun, 22 Oct 2023 11:48:01 GMTConnection: keep-aliveETag: 65350bf1-3Accept-Ranges: byteszh
* Connection #1 to host www.myng.com left intact# 不加-L选项的
[rootnode1 html]# curl -v  www.myng.com.zh
* About to connect() to www.myng.com.zh port 80 (#0)
*   Trying 192.168.1.11...
* Connected to www.myng.com.zh (192.168.1.11) port 80 (#0)GET / HTTP/1.1User-Agent: curl/7.29.0Host: www.myng.com.zhAccept: */*HTTP/1.1 302 Moved TemporarilyServer: nginx/1.22.1Date: Sun, 22 Oct 2023 12:54:30 GMTContent-Type: text/htmlContent-Length: 145Connection: keep-aliveLocation: http://www.myng.com/zhhtml
headtitle302 Found/title/head
body
centerh1302 Found/h1/center
hrcenternginx/1.22.1/center
/body
/html
* Connection #0 to host www.myng.com.zh left intact根据浏览器agent跳转 
server {listen 80;server_name www.myng.com.zh  www.myng.com.en;root /code;index index.html;location / {
#场景1: 根据用户浏览器的语言自动跳转至不同的页面。	if ($http_accept_language ~* zh){   set $language zh;}if ($http_accept_language ~* en){set $language en;}  rewrite ^/$ http://www.myng.com/$language redirect;}#2: 根据用户来源终端设备跳转至不同站点或不同域名if ($http_user_agent  ~* iphone|ipad|androaid){rewrite ^/$ http://www.myng.com/m;}#3传递跳转的uriif ($http_user_agent  ~* iphone|ipad|androaid){return 302 http://www.myng.com$request_uri;  #将uri传递} 
api地址跳转 
#api.myng.com/bbb   www.myng.com/api/bbbserver {listen 80;server_name api.myng.com;if ($http_host ~* (.*)\.(.*)\.(.*)){set $domain $1;}rewrite ^/(.*)$  http://www.myng.com/$domain/$1 last;
}维护页面 
server {listen 80;server_name www.myng.com.zh  www.myng.com.en;root /code;rewrite ^/(.*)$ /wh.html break; #放在server下location / {...根据状态码跳转 
server {listen 80;server_name www.myng.com;root /code;index index.html;
...    error_page   500 502 503 504  temp;location temp {root /data/errorrewrite ^/(.*)$ /wh.html break; #放在server下	}根据ip区分用户 
server {listen 80;server_name www.myng.com;root /code;set $ip 0;if ($remote_addr ~ 10.0.0.1) { #X-Forwarded-For代理ipset $ip 1;}if  ($ip0){rewrite  ^/(.*)$ /wh.html break; #放在server下}return 返回跳转 
需求: 如果用户请求www.myng.com/test则返回至ww.xuliangwei.com的urlserver {listen 80;server_name www.myng.com;location / {default_type text/html;# 需要设置--》识别返回字符串if ($request_uri  ~* ^/test){return 200 return test;#return 302 http://www.baidu.com;   #302跳转到百度}root /code;index index.html;}
}#浏览器访问返回
http://www.myng.com/test     return testlast break 
当rewrite规则遇到break后本locationf与其他ocation的所有rewrite/return规则都不再执行。 当rewrite规则遇到last后本locationh里后续rewrite/return规则不执行但重写后的url再次从头开始执行所有规则哪个匹配执行哪个 
server {listen 80;server_name www.myng.com;root /code;location / {#http://www.myng.com/1.html    b.htmlrewrite /1.html /2.html;#http://www.myng.com/1.html    2.html#rewrite /1.html /2.html break; #break终止不再匹配#http://www.myng.com/1.html    a.html #rewrite /1.html /2.html last; #last终止当前location的匹配rewrite /2.html /3.html;}location /2.html {rewrite /2.html /a.html;}location /3.html {rewrite /3.html /b.html;}
}[rootnode1 nginx]# echo 1.html/code/1.html
[rootnode1 nginx]# echo 2.html/code/2.html
[rootnode1 nginx]# echo 3.html/code/3.html
[rootnode1 nginx]# echo a.html/code/a.html
[rootnode1 nginx]# echo b.html/code/b.html