翼度科技»论坛 云主机 服务器技术 查看内容

Nginx proxy、rewrite、alias配置过程

10

主题

10

帖子

30

积分

新手上路

Rank: 1

积分
30
Nginx proxy、rewrite、alias配置


proxy

一般解决跨域问题,使用Nginx进行proxy转发,也可以实现负载均衡。
  1. # 代理根目录到内部应用
  2. location / {
  3.         proxy_pass http://127.0.0.1:8080;
  4. }
  5. # 代理模块到内部应用,可以带上后面拼接的路径,如果访问的是/order 则会进行一次301重定向,让浏览器访问/order/
  6. location /order/ {
  7.         proxy_pass http://127.0.0.1:8080/;
  8. }
  9. # 静态资源
  10. # 路径匹配 ^~为普通匹配,没有写也默认是普通匹配,所以可以不加
  11. root /www/resources/static/;
  12. location ^~ /static/ {
  13.         root /www/resources/;
  14. }
  15. # 后缀,文件格式匹配
  16. location ~*\.(gif|jpg|jpeg|png)${
  17.         root /www/resources/;
  18. }
复制代码
location 的匹配取最长 最精确的那条。

rewrite

Nginx的rewrite模块即ngx_http_rewrite_module标准模块,主要功能是重写请求URI,也是Nginx默认安装的模块。
  1. rewrite regrex replacement [flag]
复制代码
匹配正则将其中
  1. regrex
复制代码
部分替换成
  1. replacement
复制代码
。而flag则表示替换的程度

    1. last
    复制代码
    匹配成功后,其余匹配不执行(可以重写多个)直接用新的URI进行下一跳,也会为新的URI进行location匹配。
    1. break
    复制代码
    停止rewrite的相关指令,但不进行location跳转。重写后的请求在一个location域中跳转。可能会有人觉得没啥用,但是有些场景就是需要在url上增加一个参数但页面不做显式刷新
    1. redirect
    复制代码
    响应请求头返回302,重写浏览器uri并进行临时重定向
    1. permanent
    复制代码
    响应请求头返回301,重写浏览器uri并进行永久重定向
为了避免一个请求经过两次WAF,又能实现转向到静态页面,用了 redirect重定向,让第二次请求由浏览器发出
  1. location /download {
  2.         rewrite /download index.html  redirect;
  3. }
复制代码
alias

vue的应用入口是index.html,打包后,访问nginx的80端口想要出这个网页,就需要配置alias
  1. # 将/download请求 别名到/download/index.html页面,但是中间会发生一次301重定向重新访问/download/
  2. location /download {
  3.         index index.html;
  4.         alias /static/;
  5. }
复制代码
静态资源别名
  1. # 将/static/的文件都指向nginx 的/resource/static/文件夹
  2. location /static/ {
  3.         alias /resource/static/;
  4. }
复制代码
Nginx的proxy_pass、root、alias的说明

代理配置:

1、root

root配置代理路径时,会在代理的地址后拼接配置字段:
  1. location /static {
  2.         root static/image;
  3. }
复制代码
在访问http://ip:port/static/*.*时会映射到http://ip:port/static/static/image/*.*

2、alias(只能用于location)

alias配置代理路径时,直接替换代理地址:
  1. location /static {
  2.          alias static/image;
  3. }
复制代码
在访问http://ip:port/static/*.*时会映射到http://ip:port/static/image/*.*

3、proxy_pass

proxy_pass配置代理路径时,直接替换整个代理路径,包括ip地址的端口等:
  1. location /static {
  2.         proxy_pass http://ip_two:port_two/static;
  3. }
复制代码
在访问http://ip:port/static/*.*时会映射到http://ip_two:port_two/static/static/*.*
代理路径后不带斜杠时,配置路径会替代原本的ip和端口等,并拼接代理地址。
代理路径后带斜杠时,配置路径会替代原本的ip和端口等,不拼接代理地址。
  1. location /static/ {
  2.         proxy_pass http://ip_two:port_two/abc/;
  3. }
复制代码
在访问http://ip:port/static/*.*时会映射到http://ip_two:port_two/abc/*.*

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

来源:https://www.jb51.net/server/3222064rd.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具