工作中nginx整理
工作中nginx整理
nginx很强大,匹配规则也很丰富。本人对nginx的用法也是一知半解,只能根据实际需求去学习并总结起来。以下是我工作中用到的nginx一些用法整理,前几个还是比较常用的,最后一个就我也是第一次见。
如果针对某个活动,假设叫 dg20200918
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 }
需求:项目启动开发前,需要给运营同事一个海报地址,然后还要生成一个二维码给他们;我一般那会直接用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 }
三、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 }
yum install -y httpd-tools
2、使用htpasswd命令来创建用户
用户:windysai
密码:passwd
htpasswd -bc /home/ljy/app/nginx/conf/htpasswd/ljy_test/passwd.db windysai passwd
3、配置nginx虚拟配置文件
location ^~ /ljy_test/manage { auth_basic "service"; auth_basic_user_file /home/ljy/app/nginx/conf/htpasswd/ljy_test/passwd.db; proxy_pass http://xxx:端口; ... }
做完这3步重新加载nginx配置文件即可。
chown -Rf nginx.nginx passwd.db chmod 600 passwd.db