nginx 配置 server_name 正则 ~^(?<user>.+)\.example\.net$ 问题

nginx 配置 server_name 的正则
server_name ~^(?<user>.+)\.example\.net$;
其中的 ?<user>. 是一个整体吗?代表什么意思?是表示获取 user 这个变量的值?这个变量怎么传过来的呢?又或者难道 user 是 nginx 内置的变量?

阅读 2.6k
1 个回答

(?<user>.+)是一个捕获组?<user>不参与匹配,即表达式(?<user>.+)匹配的内容与表达式.+是一致的,区别是前者匹配的内容会保存到变量user中。

建议补一下正则捕获组(有的文章也称为捕获元)的知识,相关的文章网上随便一搜出来一大把,这里就不贴连接了

示例

nginx.conf配置

worker_processes 4;
error_log logs/nginx_error.log crit;
events {
    worker_connections  1024;
}
http {
    log_format  main '$resource - $id';

    server
    {
      listen 8080;
      server_name localhost;
      index index.html;
      location ~ /(?<resource>\w+)/(?<id>[0-9]+)/ {
            access_log  logs/access.log  main;
            root D:/test;
        }
    }
}

访问http://localhost:8080/user/11/75.jpg,logs/access.log内即出现日志内容user - 11

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题