nginx 配置参数实践

1 location匹配的是:域名/xxx  或者 协议://ip:port/xxx中xxx的部分
请求: http://example.com/static/img/logo.jpg,即/static/img/logo.jpg是nginx考察的匹配路径

2 精确匹配 =
location = /static/img/logo.jpg 命中匹配,结束匹配

3 前缀匹配

3.1 普通前缀匹配
location /static/
location /static/img/
由于/static/img/匹配更长,根据最长匹配原则,下面命中(后面没有正则location,否则继续搜索匹配)

3.1 优先前缀匹配
location ^~/static/img/
一旦匹配上,就不再匹配其它,包括正则的

4 正则匹配(优先级从上到下,一旦匹配正则,则结束匹配)

4.1 正则匹配,区分大小写 
location ~ /static/img/.*\.jpg$

4.2 正则匹配,不区分大小写
location ~* /static/img/.*\.jpg$

5 nginx获取linux上的文件
location /signManager{
            root   /opt/;
            index  index.html;
            try_files $uri $uri/ /signManager/index.html;
}


root表示nginx转发的根路径
index表示默认找文件index.html
try_files表示贴到root路径/opt/后面的路径
$uri $uri/ 表示请求的uri的部分贴到/opt/后面,例如请求http://example.com/signManager/xxx.jpg,那么在nginx搜索路径为/opt/signManager/xxx.jpg,如果还没找到xxx.jpg文件,则使用/signManager/index.html拼接为/opt/signManager/index.html搜索

6 nginx代理到web服务,一般接口需要如此代理
location ^~/portalApi/{
                 proxy_redirect          off;
                 #允许自己的网页被嵌套在同源的网页的<iframe>里面
                 add_header X-Frame-Options SAMEORIGIN;
                 proxy_http_version 1.1;
                 proxy_set_header Upgrade $http_upgrade;
                 proxy_set_header Connection "upgrade";
                 proxy_set_header    REMOTE-HOST $remote_addr;
                 proxy_set_header   Host             $host;
                 proxy_set_header   X-Real-IP        $remote_addr;
                 proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                 #将请求代理到本机8089端口
                 proxy_pass http://127.0.0.1:8089;
        }
^~/portalApi/  :优先前缀匹配
proxy_redirect:如果需要修改从被代理服务器传来的应答头中的"Location"和"Refresh"字段,可以用这个指令设置。
假设被代理服务器返回Location字段为: http://localhost:8000/two/some/uri/
这个指令:proxy_redirect http://localhost:8000/two/ http://frontend/one/;
将Location字段重写为http://frontend/one/some/uri/。

7 nginx跨域配置

location ^~/portal/{

        # 允许全部跨域
        add_header 'Access-Control-Allow-Origin' '*';
        # 浏览器把响应显示给发起者
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
         #header中允许携带的字段
        add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

            proxy_pass http://172.17.122.253;
            proxy_set_header Host    $host;
            # 追加一个地址到X-Forwarded-For,如:client, proxy1, proxy2效果
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

8 通过其它网站嵌套我们特定VUE页面
(1)允许第三方页面嵌套我方页面,设置跨域如7所示
(2)第三方的页面的回调地址:http://ip:port/vueContext/app/returnResult(支付事先传给第三方支付中心)通过nginx直接打到VUE上,由于这个请求是找不到文件的,nginx获取VUE默认的index.html页面,VUE应用需要注册路由app/returnResult的组件
,由于调用地址是/app/returnResult,VUE跳到对应页面组件,组件内部js拉取数据,注意这时VUE页面的数据请求不能鉴权
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值