以下就是我们整理的nginx常见的问题,解决办法我们例举了1 - 2种,大家可以都测试下。
<强>问题一:相同server_name多个虚拟主机优先级访问强>
服务器{ 听80; server_name server1; 位置{…} } 服务器{ 听80; server_name server2; 位置{…} }
解决方法:
配置两个配置文件:server1。conf和server2。参看
根据Linux系统中文件顺序读取
<强>问题二:位置匹配优先级强>
位置=/code1/{ 重写^ (. *)/code1/美元指数。html打破; } 位置~/代码。* { 重写^ (. *)/code3/美元指数。html打破; } {位置^ ~/代码 重写^ (. *)/code2/美元指数。html打破; }
知识填坑:
=:进行普通字符精确匹配,完全匹配
^ ~:普通字符匹配,使用前缀匹配
~ \ ~ *:表示执行一个正则匹配()
解决方法:
根据匹配找到最优匹配
优先级:完全匹配的在正则匹配的在前缀匹配
<强>问题三:try_files使用强>
位置/{ try_files uri uri//index . html美元; }
解决方法:
按顺序检查文件是否存在
<强>问题四:Nginx的别名和根区别强>
位置/request_path/img/{ 根/local_path/img/; } 位置/request_path/img/{ 别名/local_path/img/; }
解决方法:
根设置,最终请求的路径为/local_path/img/request_path/img/
别名设置,最终请求为/local_path/img/
问题五:通过多层代理,传递用户真实IP
解决方法:
设置x_real_ip=remote_addr美元 $ x_real_ip=真实IP
优化考虑点:
当前系统结构瓶颈,如观察指标,压力测试
了解业务模式,如接口业务类型,系统层次化结构
性能与安全
接口压力测试工具:ab
安装:yum安装httpd-tools
使用:ab - n 2000 - c 20 http://127.0.0.1/
nginx关于系统的优化点:
网络,系统,服务,程序,数据库
控制文件句柄数量,文件句柄就是一个索引
CPU亲和,使进程不会在处理器间频繁迁移,减少性能损耗
vim/etc/nginx/nginx.conf 用户nginx; worker_processes 16; worker_cpu_affinity汽车; worker_rlimit_nofile 15535; 事件{ 使用epoll; worker_connections 10240; } http { 包括/etc/nginx/mime.types; default_type应用程序/八进制; #字符集 utf - 8字符集; log_format主要”; access_log/var/log/nginx/access.日志主要; #核心模块 sendfile> ^ ~/上传位置{ 根/usr/share/html; 如果($ request_filename ~ * (. *) \。php) { 返回403;#拒绝访问 } }
问题三:SQL注入,利用未过滤或未审核的用户输入的攻击手段,让应用运行本不应该运行SQL的代码
解决方法:
针对' or 1=1 #等常见注入代码进行检测
搭建安全waf,针对渗透规则写正则表达式
nginx防攻击策略
使用nginx + Lua搭建安全waf防火墙
防火墙功能:
拦截饼干类型攻击
拦截异常帖子请求
拦截cc攻击,频繁访问
拦截URL,不想暴露的接口
拦截arg参数