Nginx配置技巧核心

1、在一个location下匹配多个路径

location ~ ^/(路径1|路径2|路径3|路径4|路径5) {
    proxy_pass  跳转的地址;
    proxy_set_header $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header x-tif-uid $http_x_tif_uid;
    proxy_connect_timeout 600;
    proxy_read_timeout 600;
    proxy_send_timeout 600;
    proxy_ignore_client_abort on;
    proxy_next_upstream timeout;
}

可以有多个server,一个server监听一个端口

server {
    listen 80;
        # 上面是监听ipv4的端口,下面是监听ipv6的端口
    listen [::]:80;
    # 关于SSL的配置
    #
    # listen 443 ssl default_server;
    # listen [::]:443 ssl default_server;
        # 指定根目录,以下会把访问映射到/var/www目录下
    root /var/www;
    # 设置默认的后缀,如果访问路径是一个目录,没有默认后缀,会依次访问以下后缀来尝试访问
    index index.html index.htm index.nginx-debian.html;
        # 无论用户访问时使用哪个域名或IP地址,都会被这个配置所匹配,此处也可以指定域名或ip,这样只有指定域名或ip才能访问到此server
server_name _;
#    location ~/blog/ {
        # proxy_set_header server_source_flag 'flag';
        # add_header custFlag "flag";
#        proxy_pass http://127.0.0.1:80;
#    }
    location / {
                # 设置过滤地址
#        allow 127.0.0.1;
#        deny all;
        #if ($http_referer) {
        #if (-f $request_filename/index.html){
#                # 如果不是通过重定向到达,执行重定向
        #    proxy_pass http://127.0.0.1:23000/;
        #}
                # 访问一个目录时,Nginx会按照设定的顺序尝试查找并显示第一个存在的索引文件。比如,用户访问 http://yourdomain.com/ 而没有指定具体的文件名时,Nginx会依次尝试查找 index.html, index.htm, index.php, default.html, default.htm, default.php 这些文件,并显示找到的第一个可用的文件作为页面内容
        index index.html index.htm index.php default.html default.htm default.php; 
        if (-f $request_filename/index.html){
                        # (.*): 匹配任意字符零次或多次,这里表示匹配所有内容,并将其捕获到变量 $1 中
                        # $1/index.html: 表示将匹配到的内容拼接上 /index.html
                        # break: 告诉 Nginx 在当前位置结束处理该请求,并立即应用新的重写规则。
                        # index index.html index.htm index.php default.html default.htm default.php并不是我们期待的后缀,并不能在系统中正确识别,所以就要进行跳转操作
                        # index.html或index.php是我们预期要的后缀,所以得到这个后缀了,就不再向下执行,向下执行是为了获得index.html后缀,此次跳转是为了要放行
            rewrite (.*) $1/index.html break;
        }
                # 如果请求的文件不存在(即当前请求的文件不在服务器上),则执行条件语句内部的逻辑。在这里 !-f 是一个Nginx的判断条件,表示检查当前请求对应的文件是否存在。
        if (-f $request_filename/index.php){
                        # index.php也是能够支持的一种后缀,所以也予以识别并且跳转
                        # 这里之所以没有break,是因为没必要,下面的筛选智能进入不带后缀的访问请求
            rewrite (.*) $1/index.php;
        }
                # 专门拦截没有后缀的地址,给加上合理的后缀。每次跳转之后,上面的过程会从新检查一遍,找到符合的入口
        if (!-f $request_filename){ 
            rewrite (.*) /index.php;
        }
        }
#    location /lone/ {
                # 重新设置这个请求的根目录
#        root /etc/af/h3c/lone/Three;
                # 指定默认文件为 
#        index index.html;
                # Nginx 尝试按照指定的顺序查找文件,首先尝试匹配当前URI,然后尝试在URI后面加上斜线再进行匹配,如果都没有找到则返回404页面
#        try_files $uri $uri/ /index.html =404;
#    }
        # 这段配置代码用于将以 .php 结尾的请求转发给 PHP 解释器进行处理,确保 Web 服务器能正确解析和执行 PHP 脚本。
        # 如果你采用了php的引擎,那这段是你必不可少要加的
    location ~\.php(\/.*)*$ {
#        allow 127.0.0.1;
#        deny all;
                # 指定了 FastCGI 后端服务器(PHP-FPM)的地址,Nginx 会将 PHP 脚本交给 PHP-FPM 进行处理。
        fastcgi_pass unix:/run/php/php7.3-fpm.sock;
        #fastcgi_pass 127.0.0.1:6000;
                # 设置 FastCGI 参数,告诉 PHP-FPM 当前执行脚本的路径和文件名。
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                包含了一个文件,该文件一般包含了一些默认设置和参数。
        include fastcgi_params;
    }
        # 这是地址映射的写法,把正则晒出来的地址映射到里面那个地址,alias是映射
#    location ~ /fuse/ftts/(.+/)*(.+)\.(jpg|png|gif)$ {
#        alias /etc/af/h3c/fuse/ftts/$1$2.$3;
#    }
}

扫描二维码,在手机上阅读!

发表评论

电子邮件地址不会被公开。 必填项已用*标注