• 工作中nginx整理


    工作中nginx整理

     nginx很强大,匹配规则也很丰富。本人对nginx的用法也是一知半解,只能根据实际需求去学习并总结起来。以下是我工作中用到的nginx一些用法整理,前几个还是比较常用的,最后一个就我也是第一次见。

     

    一、配置404页面(针对同一域名不同服务)
      针对某个常用活动的域名abc.gdljy.cn,在这个域名下都使用同一个404页面,大家配的多,类似这样子。
    /home/ljy/app/nginx/html/mddd_404 下面有一个index.html,然后这个index.html引用同级目录images的一个图片:
    <img src="images/404.jpg" width="100%"> 

    如果针对某个活动,假设叫 dg20200918

    具体的location匹配某个活动,某个活动自己定义自己的404页面
    1 location ^~ /dg20200918 {
    2     root /home/gdtc/app/nginx/html;
    3     index index.html;
    4     error_page 403 404 /dg404;
    5     location ~ /dg404 {
    6     root /home/gdtc/app/nginx/html;
    7     }
    8 }
    View Code
    二、nginx跳到指定redirect页面
    需求:项目启动开发前,需要给运营同事一个海报地址,然后还要生成一个二维码给他们;我一般那会直接用location匹配一个项目目录,然后项目地址就这样直接发这个给他们了:a.gdljy.cn/dcbg20201013/
     
    location ^~ /dcbg20201013 {
        root /home/ljy/data;
    }

    然后项目启动后(tomcat跑的),停服务就悲剧了,因为开发人员给的地址是一个项目下叫redirect.html 的页面,不应该是a.gdljy.cn/dcbg20201013/,并且默认是找 index.html 的,找不到就404了。

         那怎么办呢,dcbg20201013这个项目地址已经给出去了(海报不是说换就换的,真是一失足成千古恨,泪 = =! ),那么就建一个临时目录呗,用rewrite去实现原目录重写到这个目录下的redirect.html
     
    问题解决:

      弄一个临时目录为bg20201013 ,bg20201013变成真正的项目目录,原来的目录变成一个傀儡,仅仅充当一个被重写的地址, tomcat的server.xml也得改,Context path由原来的dcbg20201013改成bg20201013。

     1         location ^~ /bg20201013 {
     2               proxy_pass http://14.18.102.235:8290;
     3               error_page 502 404 /dcbg-404;
     4               location ~ /dcbg-404 {
     5                    root  /home/gdtc/app/nginx/html;
     6               }
     7               ##ip受限页面
     8               error_page 403 /dcbg-403;
     9               location ~ /dcbg-403 {
    10                    root  /home/gdtc/app/nginx/html;
    11               }
    12          }
    13 #这是原来给出去的二维码地址
    14         location ^~ /dcbg20201013 {
    15            rewrite  ^/(.*)$  https://act.gdlottery.cn/bg20201013/redirect.html permanent;
    16         }
    View Code

    三、nginx问题之如何将GET问题转换为POST请求

        开发调接口,需要从原来的https://a.gdljy.cn/dg20200918/notification,跳到:

    https://a.gdljy.cn/gd20201214/notification,我原来用rewrite写的,发现跟proxy_method一起用是无法生效的,幸好这个proxy_pass也能跳。

    1 location ^~ /dg20200918/notification {
    2     proxy_method POST;
    3     proxy_pass     https://a.gdljy.cn/gd20201214/notification;
    4    #rewrite  ^/(.*)$  https://a.gdljy.cn/gd20201214/notification permanent;    
    5 }
    View Code

     

     

  • 相关阅读:
    几种跨平台解决方案:React Native、Kotlin、Flutter、Swift
    vue组件化
    flutter学习笔记(合集)
    sessionStorage获取用户行为
    什么是深度学习?
    javascript原生dom的那些事儿
    对象的创建
    初识requirejs
    使用vue-cli3快速构建项目
    python16_day40【数据结构】
  • 原文地址:https://www.cnblogs.com/windysai/p/14122105.html
Copyright © 2020-2023  润新知