nginx常见问题整理和解决办法

 更新时间:2017年12月08日 09:28:16   作者:Awebone  
给大家详细整理了nginx常见的问题以及对应问题的处理办法,有需要的朋友参考一下吧。

以下就是我们整理的nginx常见的问题,解决办法我们例举了1-2种,大家可以都测试下。

常见问题

问题一:相同server_name多个虚拟主机优先级访问

server{
 listen 80;
 server_name server1;
 location{...}
}
server{
 listen 80;
 server_name server2;
 location{...}
}

解决方法:

配置两个conf文件:server1.conf 和 server2.conf

根据Linux系统中文件顺序读取

问题二:location匹配优先级

location = /code1/ {
 rewrite ^(.*)$ /code1/index.html break;
}
location ~ /code.* {
 rewrite ^(.*)$ /code3/index.html break;
}
location ^~ /code {
 rewrite ^(.*)$ /code2/index.html break;
}

知识填坑:

=:进行普通字符精确匹配,完全匹配

^~:普通字符匹配,使用前缀匹配

~ \~*:表示执行一个正则匹配()

解决方法:

根据匹配找到最优匹配

优先级:完全匹配>正则匹配>前缀匹配

问题三:try_files使用

location / {
 try_files $uri $uri/ /index.html;
}

解决方法:

按顺序检查文件是否存在

问题四:Nginx的alias和root区别

location /request_path/img/ {
 root /local_path/img/;
}
location /request_path/img/ {
 alias /local_path/img/;
}

解决方法:

root设置,最终请求的路径为/local_path/img/request_path/img/

alias设置,最终请求为/local_path/img/

问题五:通过多层代理,传递用户真实IP

解决方法:

set x_real_ip=$remote_addr
$x_real_ip=真实IP

性能优化问题

优化考虑点:

当前系统结构瓶颈,如观察指标、压力测试

了解业务模式,如接口业务类型、系统层次化结构

性能与安全

接口压力测试工具:ab

安装:yum install httpd-tools

使用:ab -n 2000 -c 20 http://127.0.0.1/

nginx关于系统的优化点:

网络、系统、服务、程序、数据库

控制文件句柄数量,文件句柄就是一个索引

CPU亲和,使进程不会在处理器间频繁迁移,减少性能损耗

vim /etc/nginx/nginx.conf
user nginx;
worker_processes 16;
worker_cpu_affinity auto;
worker_rlimit_nofile 15535;
events{
 use epoll;
 worker_connections 10240;
}
http{
 include /etc/nginx/mime.types;
 default_type application/octet-stream;
 #Charset
 charset utf-8;
 log_format main '';
 access_log /var/log/nginx/access.log main;
 #Core module
 sendfile on;
 keepalive_timeout 65;
 #Gzip module
 gzip on;
 gzip_disable "MSIE [1-6]\.";
 gzip_http_version 1.1;
 #Virtal server
 include /etc/nginx/conf.d/*.conf;
}

nginx安全问题及防范策略

恶意行为

问题:爬虫行为和恶意抓取、资源盗用

解决方法:

基础防盗链功能:不让恶意用户轻易的爬取网站对外数据

secure_link_module模块:对数据安全性提高加密验证和失效性,对一些重要数据使用

access_module模块:对后台、部分用户服务的数据提供IP监控,如规定IP等

应用层攻击

问题一:后台密码撞库,通过密码字典不断对后台系统登录性尝试,获取后台密码

解决方法:

后台密码复杂的,大小写数字字符等

预警机制,同一IP的频繁访问

access_module模块:对后台、部分用户服务的数据提供IP监控

问题二:文件上传漏洞,利用可以上传的接口将恶意代码植入服务器中,再通过url访问以执行

解决方法:

针对一些木马和后缀等做一定的处理

location ^~ /upload{
 root /usr/share/html;
 if($request_filename ~*(.*)\.php){
  return 403; #拒绝访问
 }
}

问题三:SQL注入,利用未过滤或未审核的用户输入的攻击手段,让应用运行本不应该运行的SQL代码

解决方法:

针对' or 1=1 #等常见注入代码进行检测

搭建安全waf,针对渗透规则写正则表达式

nginx防攻击策略

使用nginx+Lua搭建安全waf防火墙

防火墙功能:

拦截Cookie类型攻击

拦截异常post请求

拦截cc攻击,频繁访问

拦截URL,不想暴露的接口

拦截arg参数

相关文章

  • 解读nginx中limit配置参数

    解读nginx中limit配置参数

    这篇文章主要介绍了nginx中limit配置参数的详细作用,希望我们整理的内容能帮助到你,一起学习下吧。
    2018-01-01
  • 借用nginx.vim工具进行语法高亮和格式化配置nginx.conf文件

    借用nginx.vim工具进行语法高亮和格式化配置nginx.conf文件

    今天小编就为大家分享一篇关于借用nginx.vim工具进行语法高亮和格式化配置nginx.conf文件,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Nginx服务器配置HTTPS nginx.config 配置文件(教程)

    Nginx服务器配置HTTPS nginx.config 配置文件(教程)

    下面小编就为大家分享一篇Nginx服务器配置HTTPS nginx.config 配置文件(教程),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • 配置Nginx实现访问本地静态资源的完整指南

    配置Nginx实现访问本地静态资源的完整指南

    Nginx 是一个高性能的 HTTP 服务器和反向代理服务器,广泛用于静态资源的托管和负载均衡,在开发和生产环境中,我们常常需要使用 Nginx 来提供本地静态资源的访问,本文将详细介绍如何配置 Nginx 以便访问本地静态资源,需要的朋友可以参考下
    2024-08-08
  • nginx出现权限问题解决(13: Permission denied)

    nginx出现权限问题解决(13: Permission denied)

    本文主要介绍了nginx出现权限问题解决(13: Permission denied),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Nginx使用Lua模块实现WAF的原理解析

    Nginx使用Lua模块实现WAF的原理解析

    waf是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品,本文重点给大家介绍Nginx使用Lua模块实现WAF的原理,需要的朋友参考下吧
    2021-09-09
  • nginx配置文件详解中文版

    nginx配置文件详解中文版

    这篇文章主要介绍了nginx配置文件nginx.conf的配置参数详解,并增加了中文版注释,需要的朋友可以参考下
    2014-03-03
  • nginx+lua+redis实现降级的示例代码

    nginx+lua+redis实现降级的示例代码

    随着用户访问量的激增,网站或电商平台可能会面临系统超负载的问题,导致注册、下单、支付等功能出现问题,为保障核心服务的高可用性,可以采用降级策略,本文就来介绍一下nginx+lua+redis降级,感兴趣的可以了解学习
    2024-10-10
  • 通过Nginx代理转发配置实现跨域的方法(API代理转发)

    通过Nginx代理转发配置实现跨域的方法(API代理转发)

    这篇文章主要给大家介绍了关于如何通过Nginx代理转发配置实现跨域(API代理转发)的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Nginx具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-11-11
  • 详细nginx多域名配置的方法

    详细nginx多域名配置的方法

    Nginx绑定多个域名,可通过把多个域名规则写一个配置文件里实现,也可通过分别建立多个域名配置文件实现,为了管理方便,建议每个域名建一个文件,有些同类域名则可写在一个总的配置文件里。下面这篇文章就来详细看看nginx多域名配置的方法,有需要的朋友们可以参考。
    2016-12-12

最新评论