• 玩转nginx的配置文件2


    1. nginx的地址重写rewrite

    1. URL Rewrite最常见的应用是URL伪静态化,是将动态页面显示为静态页面方式的一种技术。

    2. 从安全角度上讲,如果在URL中暴露太多的参数,无疑会造成一定量的信息泄漏

    3. 实现网站地址跳转,例如用户访问360buy.com,将其跳转到jd.com

    rewrite相关指令有 if、rewrite、set、return

    1. if (condition) { … }
    2. if 可以支持如下条件判断匹配符号
    3. ~ 正则匹配 (区分大小写)
    4. ~* 正则匹配 (不区分大小写)
    5. !~ 正则不匹配 (区分大小写)
    6. !~* 正则不匹配 (不区分大小写)
    7. -f 和!-f 用来判断是否存在文件
    8. -d 和!-d 用来判断是否存在目录
    9. -e 和!-e 用来判断是否存在文件或目录
    10. -x 和!-x
    Rewrite flag

    rewrite  指令根据表达式来重定向URI,或者修改字符串。可以应用于server,location, if环境下每行rewrite指令最后跟一个flag标记,支持的flag标记有:

    1. last 相当于Apache里的[L]标记,表示完成rewrite。默认为last
    2. break 本条规则匹配完成后,终止匹配,不再匹配后面的规则
    3. redirect 返回302临时重定向,浏览器地址会显示跳转后的URL地址
    4. permanent 返回301永久重定向,浏览器地址会显示跳转后URL地址

    例子

    1. 本地解析host文件
    2. # http://www.testpm.com/a/1.html ==> http://www.testpm.com/b/2.html
    3. location /a {
    4. root /html;
    5. index 1.html index.htm;
    6. rewrite .* /b/2.html permanent;
    7. }
    8. location /b {
    9. root /html;
    10. index 2.html index.htm;
    11. }
    12. 2
    13. # http://www.testpm.com/2019/a/1.html ==> http://www.testpm.com/2018/a/1.html
    14. location /2019/a {
    15. root /var/www/html;
    16. index 1.html index.hml;
    17. rewrite ^/2019/(.*)$ /2018/$1 permanent;
    18. }
    19. location /2018/a {
    20. root /var/www/html;
    21. index 1.html index.htl;
    22. }
    23. # http://www.qf.com/a/1.html ==> http://jd.com/a/1.html
    24. location /a {
    25. root /html;
    26. if ( $host ~* testpm.com ){
    27. rewrite .* http://jd.com$request_uri permanent;
    28. }
    29. }
    30. 5: 在访问目录后添加/ (如果目录后已有/,则不加/)
    31. # http://www.tianyun.com/a/b/c ==> http://www.tianyun.com/a/b/c/
    32. # $1: /a/b
    33. # $2: c
    34. # http://$host$1$2$3/
    35. location /a/b/c {
    36. root /usr/share/nginx/html;
    37. index index.html index.hml;
    38. if (-d $request_filename) {
    39. rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
    40. }
    41. }
    42. 6
    43. # http://www.tianyun.com/login/tianyun.html ==> http://www.tianyun.com/reg/login.html?user=tianyun
    44. location /login {
    45. root /usr/share/nginx/html;
    46. rewrite ^/login/(.*)\.html$ http://$host/reg/login.html?user=$1;
    47. }
    48. location /reg {
    49. root /usr/share/nginx/html;
    50. index login.html;
    51. }

    2. return指令

    1. 例 如果访问的.sh结尾的文件则返回403操作拒绝错误
    2. server {
    3. listen 80;
    4. server_name www.testpm.cn;
    5. #access_log /var/log/nginx/http_access.log main;
    6. location / {
    7. root /usr/share/nginx/html;
    8. index index.html index.htm;
    9. }
    10. location ~* \.sh$ {
    11. return 403;
    12. }
    13. }
    14. 80 ======> 44380443端口
    15. server {
    16. listen 80;
    17. server_name www.chaosaigc.com;
    18. access_log /var/log/nginx/http_access.log main;
    19. return 301 https://www.chaosaigc.com$request_uri;
    20. }

    3. localtion指令

    1. / 通用匹配,任何请求都会匹配到
    2. @ 内部服务跳转
    3. (1) =:表示完全匹配;
    4. (2) ^~:匹配URI的前缀,并且后面的正则表达式不再匹配,如果一个URI同时满足两个规则的话,匹配最长的规则;
    5. (3) ~:匹配正则表达式,大小写敏感;
    6. (4) ~*:匹配正则表达式,大小写不敏感;
    7. 优先级:(1> (2) > (3) = (4)

    @ :定义命名 location 区段,这些区段客户段不能访问,只可以由内部产生的请求来访问,如try_files或error_page等

    1. server {
    2. listen 80;
    3. server_name localhost;
    4. location / {
    5. root /usr/share/nginx/html;
    6. index index.html;
    7. try_files /index.htm /a.html /b.html @error;
    8. }
    9. location @error {
    10. return 409;
    11. }
    12. }

    4. nginx错误页面配置

    1. error_page 404 403 500 502 503 504 /404.html;
    2. location = /404.html {
    3. root /usr/local/nginx/html;
    4. }

  • 相关阅读:
    python深拷贝
    vue项目electron打包
    【行业科普】常见的边缘计算产品有哪些?主要应用于哪些场景?
    机器学习(Machine learning,ML)1基础入门
    手把手教你使用LabVIEW OpenCV dnn实现图像分类(含源码)
    【FI】FB02中Coding Block字段如何设置为可修改
    【面试必问】HTTP与HTTPS的区别以及HTTPS的工作流程
    C语言数据结构Queue----循环队列
    node.js---内置API之fs文件系统模块——fs.readFile()方法:读取指定文件中的内容
    重温C语言十二---指针
  • 原文地址:https://blog.csdn.net/weixin_45814478/article/details/138199170