• nginx 常见问题一


    Nginx常见问题

    一、nginx多server优先级

    在开始处理一个http请求时,nginx会取出header头中的Host变量,
    与nginx.conf中的每个server_name进行匹配,
    以此决定到底由哪一个server来处理这个请求,
    但nginx如何配置多个相同的server_name,会导致server_name出现优先级访问冲突。
    

    1.准备多个配置文件

    [root@web01 /etc/nginx/conf.d]# vim test1.conf
    server {
        listen 80;
        server_name localhost test1.com;
    
        location / {
            root /code/test1;
            index index.html;
        }
    }
    
    [root@web01 /etc/nginx/conf.d]# vim test2.conf
    server {
        listen 80;
        server_name localhost test2.com;
    
        location / {
            root /code/test2;
            index index.html;
        }
    }
    
    [root@web01 /etc/nginx/conf.d]# vim test3.conf
    server {
        listen 80;
        server_name localhost test3.com;
    
        location / {
            root /code/test3;
            index index.html;
        }
    }
    [root@web01 conf.d]#
    

    2.配置多个站点文件

    [root@web01 /etc/nginx/conf.d]# mkdir /code/test{1..3}
    [root@web01 /etc/nginx/conf.d]# echo test1111111111111 > /code/test1/index.html
    [root@web01 /etc/nginx/conf.d]# echo test2222222222222 > /code/test2/index.html
    [root@web01 /etc/nginx/conf.d]# echo test3333333333333 > /code/test3/index.html
    

    3.配置hosts请求页面

    10.0.0.7 test1.com test2.com test3.com
    
    #请求域名时,可以请求到域名对应的页面,请求IP时,返回的页面时配置文件中第一个配置的站点
    

    4.多server优先级总结

    # 在开始处理一个HTTP请求时,Nginx会读取header(请求头)中的host(域名),与每个server中的server_name进行匹配,
    # 来决定用哪一个server标签来完成处理这个请求,有可能一个Host与多个server中的server_name都匹配,
    # 这个时候就会根据匹配优先级来选择实际处理的server。优先级匹配结果如下:
    
    1.首先选择所有的字符串完全匹配的server_name。(完全匹配)
    2.选择通配符在前面的server_name,如 *.test.com  (blog.test.com)
    3.选择通配符在后面的server_name,如 www.test.*  (www.test.com www.test.cn)
    4.最后选择使用正则表达式匹配的server_name
    5.如果全部都没有匹配到,那么将选择在listen配置项后加入[default_server]的server块
    6.如果没写,那么就找到匹配listen端口的第一个Server块的配置文件
    

    5.多server优先级配置测试

    #配置
    [root@web01 /etc/nginx/conf.d]# cat server1.conf 
    server {
        listen 80;
        server_name localhost linux.test.com;
    
        location / {
            root /code/server1;
            index index.html;
        }
    }
    [root@web01 /etc/nginx/conf.d]# cat server2.conf 
    server {
        listen 80;
        server_name localhost *.test.com;
    
        location / {
            root /code/server2;
            index index.html;
        }
    }
    [root@web01 /etc/nginx/conf.d]# cat server3.conf 
    server {
        listen 80;
        server_name localhost linux.test.*;
    
        location / {
            root /code/server3;
            index index.html;
        }
    }
    [root@web01 /etc/nginx/conf.d]# cat server4.conf 
    server {
        listen 80;
        server_name localhost ~^linux.(.*).com$;
    
        location / {
            root /code/server4;
            index index.html;
        }
    }
    [root@web01 /etc/nginx/conf.d]# cat server5.conf 
    server {
        listen 80 default_server;
        server_name localhost;
    
        location / {
            root /code/server5;
            index index.html;
        }
    }
    
    #站点文件
    [root@web01 /etc/nginx/conf.d]# echo linux.test.com > /code/server1/index.html
    [root@web01 /etc/nginx/conf.d]# echo *.test.com > /code/server2/index.html
    [root@web01 /etc/nginx/conf.d]# echo linux.test.* > /code/server3/index.html
    [root@web01 /etc/nginx/conf.d]# echo '~^linux.(.*).com$' > /code/server4/index.html
    [root@web01 /etc/nginx/conf.d]# echo default_server > /code/server5/index.html
    

    6.测试优先级

    #配置hosts
    10.0.0.7 linux.test.com
    
    #访问测试
    压缩配置,测试
    压缩配置,测试
    
  • 相关阅读:
    Cmake Make makefile GNU autotools
    第三方库的安装:Pangolin
    ./configure, make, sudo make install 的含义
    [Eigen]C++开源线代库
    术语解释
    KDevelop使用笔记【中文教程】
    Python-Day1
    找不到或无法加载主类
    仅仅测试Word2016发布博客
    First Day!
  • 原文地址:https://www.cnblogs.com/xiaolang666/p/13638905.html
Copyright © 2020-2023  润新知