Nginx常用问题 -01

Nginx常见问题
一、nginx多server优先级
在开始处理一个http请求时,nginx会取出header头中的Host变量(域名),与nginx.conf中的每个server_name进行匹配,以此决定到底由哪一个server来处理这个请求,但nginx如何配置多个相同的server_name,会导致server_name出现优先级访问冲突。
1.准备多个配置文件
[root@web01 conf.d]#  cat server1.conf 
server {
    listen 80;
    server_name localhost test1.com;

    location / {
        root /mm/test1;
        index index.html;
    }
}

[root@web01 conf.d]# cat server2.conf 
server {
    listen 80;
    server_name localhost test2.com;

    location / {
        root /mm/test2;
        index index.html;
    }
}

[root@web01 conf.d]# cat server3.conf 
server {
    listen 80;
    server_name localhost test3.com;

    location / {
        root /mm/test3;
        index index.html;
    }
}

## 检查nginx -t 并重启   #会提示警告
[root@web01 ~]# systemctl restart nginx
2.创建站点文件
[root@web01 conf.d]# mkdir /mm/test{1..3}
[root@web01 conf.d]# chown -R www.www /mm/

[root@web01 conf.d]# echo server1 123 > /mm/test1/index.html
[root@web01 conf.d]# echo server2 123 > /mm/test2/index.html
[root@web01 conf.d]# echo server3 123 > /mm/test3/index.html
3.配置本地hosts并访问
1.根据ip地址访问   
# 默认从上到下依次匹配 

在百度10.10.0.7   会显示 server1 123 

如果在把[root@web01 conf.d] server1.conf 
改成其他  ,则会显示server2 123 
其他同理
 
2.配置hosts,访问域名
10.10.0.7 test1.com test2.com test3.com
4.多server优先级总结
1.首先选择所有的'字符串完全匹配'的'server_name'。(完全匹配  www.mm.xin.com)
2.选择'通配符在前面'的server_name,如 '*.mm.xin.com'
3.选择'通配符在后面'的server_name,如 'www.mumusir.*'
4.最后选择使用'正则表达式'匹配的server_name,如:'~^www\.(.*)\.com$'
5.如果全部都没有匹配到,那么将选择在'listen配置项'后加入'[default_server]'的server块
6.如果没写,那么就找到匹配listen端口的第一个Server块的配置文件
5.多server优先级验证
# 1、配置完全匹配的配置文件
[root@web01 conf.d]# vim server.mm.conf
server {
    listen 80;
    server_name www.test.com;

    location / {
        root /mm/test;
        index index.html;
    }
}
[root@web01 conf.d]# echo "完全匹配123" > /mm/test/index.html

# 2、配置通配符在前面的配置文件
[root@web01 conf.d]# vim server1.mm.conf
server {
    listen 80;
    server_name *.test.com;

    location / {
        root /mm/test1;
        index index.html;
    }
}
[root@web01 conf.d]# echo "通配符在前面123" > /mm/test1/index.html

# 3、配置通配符在后面的配置文件
[root@web01 conf.d]# vim server2.mm.conf
server {
    listen 80;
    server_name www.test.*;

    location / {
        root /mm/test2;
        index index.html;
    }
}
[root@web01 conf.d]# echo "通配符在后面123" > /mm/test2/index.html
# 4、正则表达式的配置文件
[root@web01 conf.d]# vim server3.mm.conf 
server {
    listen 80;
    server_name ~^www\.(.*)\.com$;

    location / {
        root /mm/test3;
        index index.html;
    }
}
[root@web01 conf.d]# echo "正则表达式123" > /mm/test3/index.html

# 5、配置default_server的配置文件
[root@web01 conf.d]# vim server4.mm.conf 
server {
    listen 80 default_server;
    server_name localhost;

    location / {
        root /mm/test4;
        index index.html;
    }
}
[root@web01 conf.d]# echo "default_server" > /mm/test4/index.html

# 6、放在第一个的配置文件
[root@web01 conf.d]# vim mm.conf 
server {
    listen 80;
    server_name localhost;

    location / {
        root /mm/test5;
        index index.html;
    }
}
[root@web01 conf.d]# echo "第一个123" > /mm/test5/index.html

## 检查nginx -t 并重启   
[root@web01 ~]# systemctl restart nginx
6.配置本地hosts并访问
#配置本地hosts

10.10.0.7 www.test.com
7.补充知识
# 补充   中文乱码  在 /etc/nginx/nginx.conf 里添加一行  
   charset utf8;  # 添加一行  
   access_log  /var/log/nginx/access.log  main;


# 补充 dG  删除全文全部内容  
# yum nginx安装  需要修改/etc/nginx/nginx.conf 里面default_server
二、禁止IP访问
当用户通过访问IP或者未知域名访问你得网站的时候,你希望禁止显示任何有效内容,可以给他返回500,目前国内很多机房都基本关闭外网,使用内网,需要时在开启。
1.禁止IP访问直接返回错误
[root@web02 conf.d]# vim mm.conf 
server {
    listen 80 default_server; #默认第一个 default_server
    server_name localhost;
    return 500;
}
2.引流的方式,跳转到其他网站
[root@web02 conf.d]# vim mm.conf 
server {
    listen 80 default_server;
    server_name localhost;
    return 302 http://www.baidu.com;
}
3.返回指定的内容
[root@web02 conf.d]# vim mm.conf 
server {
    listen 80 default_server;
    server_name localhost;
    default_type text/plain;
    return 200 "请使用域名访问正规网站!!!";
}
4.跳转到指定文件
[root@web02 ~]# vim /etc/nginx/conf.d/a.conf 
server {
    listen 80 default_server;
    server_name localhost;
    root /mm;
    rewrite (.*) /1.png;
}

## /mm/文件下必须有图片
三、nginx的include
一台服务器配置多个网站,如果配置都写在nginx.conf主配置文件中,会导致nginx.conf主配置文件变得非常庞大而且可读性非常的差。那么后期的维护就变得麻烦。 

假设现在希望快速的关闭一个站点,该怎么办? 
	1.如果是写在nginx.conf中,则需要手动注释,比较麻烦 
	2.如果是include的方式,那么仅需修改配置文件的扩展名,即可完成注释 
	Include包含的作用是为了简化主配置文件,便于人类可读。
	
/etc/nginx/nging.conf               #修改nginx的配置文件  *conf文件
	
inlcude /etc/nginx/online/*.conf 	#线上使用的配置 

/etc/nginx/offline 					#保留配置,不启用(下次使用在移动到online中)
四、nginx的root与alias
root与alias路径匹配主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上,alias是一个目录别名的定义,root则是最上层目录的定义。

root的处理结果是:root路径+location路径
alias的处理结果是:使用alias定义的路径
1.root和alias的配置
[root@lb02 conf.d]# cat image.conf 
server {
    listen 80;
    server_name image.com;

    location /picture {
        root /mm;
    }
}
#使用root时,用户访问http://image.com/picture/11.png时,实际上Nginx会找到/mm/picture/11.png文件

[root@lb02 conf.d]# cat image.conf 
server {
    listen 80;
    server_name image.com;

    location /picture {
        alias /mm;
    }
}
#使用alias时,用户访问http://image.com/picture/11.png时,实际上Nginx会找
到/mm/11.png文件
2.线上配置
[root@lb02 conf.d]# cat image.conf 
server {
    listen 80;
    server_name image.com;

    location / {
        root /mm;
    }

    location ~* ^.*\.(png|jpg|gif)$ {
        alias /mm/images/;
    }
}
五、Nginx调整上传文件大小
在nginx使用上传文件的过程中,通常需要设置文件大小限制,避免出现 413 Request Entity Too Lar
1.nginx上传文件大小限制配置语法
Syntax:  client_max_body_size size;
Default: client_max_body_size 1m;
Context: http, server, location
2.nginx长传文件大小限制配置示例
[root@lb02 conf.d]# vim /etc/nginx/nginx.conf

#也可以放入http层,全局生效
server {
    listen 80;
    server_name _;
    client_max_body_size 500m;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FikL-09-19

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值