Nginx常用配置笔记

Network4年前 (2020)更新 bruce
177 0
内容纲要

Nginx开发配置

nginx配置详解
nginx配置文件详解中文版

访问目录权限

多个项目,需要Nginx具有访问目录权限

location / {
        root /data/www/file          // web root目录;
        autoindex on;                     // 开启目录浏览功能;

        //关闭详细文件大小统计,让文件大小显示MB,GB单位,默认为b;
        autoindex_exact_size off;
        autoindex_localtime on;   //开启以服务器本地时区显示文件修改日期
}

Nginx 运营配置

反向代理配置

upstream backend  {
  server backend1.example.com weight=5;
  server backend2.example.com:8080;
  server unix:/tmp/backend3;
}

# 匹配到/api开头的路由时候,将请求转发到http://192.168.0.1,但是通常不是直接填写地址,而是设置一个`upstream`配置,例如上面,在下面配置内注释了upstream backend
location /api {
    proxy_pass  http://192.168.0.1; # 请求转向地址192.168.0.1
    # proxy_pass  http://backend;
    #不修改被代理服务器返回的响应头中的location头
    proxy_redirect off;
    #使用nginx反向代理后,如果要使服务获取真实的用户信息,用以下的设置
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

LNMP高并发优化

Nginx 优化配置

//nginx层面
//nginx.conf中配置
worker_rlimit_nofile 10000;   //子进程允许打开的文件数
keepalive_timeout 0;          //结束响应后立即断开tcp连接。
//keeplive_timeout表示tcp完成响应后,继续保持连接多久。如果这个值过大,会造成资源无效占用。
events{
    worker_connections 10240;
}
//系统层面
echo 500000 > /proc/sys/net/core/somaxconn  //设置最大连接数
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle  //加快tcp回收
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse    //空的tcp允许回收利用
echo 0 > /proc/sys/net/ipv4/tcp_syncookies  //关闭洪水抵御

ulimit -n 30000

nginx&php-fpm优化配置

nginx将请求转发给php-fpm处理,当nginx转发很多请求时,php-fpm进程不够用,就会生成子进程。然而生成子进程需要内核来调度,比较耗时。如果网站并发比较大,可以用静态方式一次性生成多个子进程,保持的内存中

//修改phjp-fpm.conf
pm=static   //让php-fpm进程始终保持,不需要动态生成
pm.max_children=32 始终保持的子进程数量

php&mysql优化

内核层面:加大连接数,加快tcp回收
mysql层面:增大连接数
php层面:用长连接,节省连接数
用内存缓存(memcached),减轻mysql压力
内存缓存适用于缓存复杂的sql查询。因为php与memcached也要建立tcp连接,所以简单的sql查询不需要用缓存。

整体优化思路

graph TD
A[高并发优化] --> B(socket)
A[高并发优化] --> C(IO)
B --> D(nginx)
B --> E(系统)
C --> F(nginx)
C --> G(系统)

D --> |子进程允许打开的连接| H(worker_connection)
E --> |最大连接数| I(somaxconn)
E -->|加快TCP连接的回收| J(recycle)
E -->|空的是否允许回收利用| K(reuse)
E --> L(关闭洪水攻击抵御)

F --> |子进程允许打开的文件| M(work_rlimit_nofile)
F --> |设置一个比较大的值|N(ulimit -n)
© 版权声明

相关文章

暂无评论

暂无评论...