您当前的位置:首页 > 网站建设 > 网站维护
| php | asp | css | H5 | javascript | Mysql | Dreamweaver | Delphi | 网站维护 | 帝国cms | React | 考试系统 | ajax | jQuery |

关于nginx

51自学网 2022-07-22 18:49:38
  网站维护

nginx 提供反向代理服务,日常开发过程中有时候我们需要使用nginx 作为代理服务根据url的不同去访问不同的服务器或者不同端口,如下提供两种方案。

1.直接替换location  匹配部分

1.proxy_pass的目标地址,默认不带/,表示只代理域名,url和参数部分不会变(把请求的path拼接到proxy_pass目标域名之后作为代理的URL)

2.如果在目标地址后增加/,则表示把path中location匹配成功的部分剪切掉之后再拼接到proxy_pass目标地址

server {        listen       80;        server_name  localhost;location /system {                   proxy_pass        http://127.0.0.1:8080;        proxy_redirect    off;        proxy_set_header  Host  $host;        proxy_set_header  X-Real-IP  $remote_addr;        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;					}# proxy_pass  以/结尾location /system {                   proxy_pass        http://127.0.0.1:8080/;        proxy_redirect    off;        proxy_set_header  Host  $host;        proxy_set_header  X-Real-IP  $remote_addr;        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;					}        }

例如:http://192.168.25.132/system/sysMenu/tree

如上两个匹配成功后,实际代理的目标url分别是

http://127.0.0.1:8080/system/sysMenu/tree (把/system/sysMenu/tree拼接到proxy_pass 地址的127.0.0.1:8080之后)

http://127.0.0.1:8080/sysMenu/tree (把/system/sysMenu/tree去掉匹配到的location /system拼接到proxy_pass 地址的127.0.0.1:8080之后)

2.使用nginx 的rewrite 模块 

rewrite是实现URL重写的关键指令,根据regex(正则表达式)部分内容,重定向到replacement,结尾是flag标记。

  rewrite    <regex>    <replacement>    [flag];     关键字      正则        替代内容          flag标记    关键字:其中关键字error_log不能改变    正则:perl兼容正则表达式语句进行规则匹配    替代内容:将正则匹配的内容替换成replacement    flag标记:rewrite支持的flag标记flag标记说明:last  #本条规则匹配完成后,继续向下匹配新的location URI规则break  #本条规则匹配完成即终止,不再匹配后面的任何规则redirect  #返回302临时重定向,浏览器地址会显示跳转后的URL地址permanent  #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

把到本服务的所有请求转发到www.summer.com

rewrite ^/(.*) http://www.summer.com/$1 break;

把到本服务器的所有请求路径中以/system开头的请求 替换成不带system的,例如http://192.168.25.132/system/sysMenu/tree ,匹配后地址变成 http://127.0.0.1:8080/sysMenu/tree

rewrite ^/system/(.*) /$1 break;        

说明:                                        

rewrite为固定关键字,表示开始进行rewrite匹配规则

regex部分是 ^/(.*) ,这是一个正则表达式,匹配完整的域名和后面的路径地址

replacement部分是http://www.summer.com/$1   $1是取自regex部分()里的内容。匹配成功后跳转到的URL。

flag部分 break表示停止匹配,然后跳转到新的 http://www.summer.com/$1 地址上。

server {        listen       80;        server_name  localhost;         #charset koi8-r;        #access_log  logs/host.access.log  main;        location / {            #/data/manager可以存放静态页面            root   /data/manager;            index  index.html index.htm;        }		location /system {                   proxy_pass        http://127.0.0.1:8080;        proxy_redirect    off;        proxy_set_header  Host  $host;        proxy_set_header  X-Real-IP  $remote_addr;        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;		rewrite ^/system/(.*) /$1 break;				}    }

regex 常用正则表达式说明

rewrite 企业应用场景

Nginx的rewrite功能在企业里应用非常广泛:

u 可以调整用户浏览的URL,看起来更规范,合乎开发及产品人员的需求。

u 为了让搜索引擎搜录网站内容及用户体验更好,企业会将动态URL地址伪装成静态地址提供服务。

u 网址换新域名后,让旧的访问跳转到新的域名上。例如,访问京东的360buy.com会跳转到jd.com

u 根据特殊变量、目录、客户端的信息进行URL调整等


下载地址:
k8s部署Ingress并创建规则的详细介绍
Apache
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1