zoukankan      html  css  js  c++  java
  • Nginx配置优化

    一、配置Nginx隐藏版本号

      1修改源码包 ,必须在安装之前(测试命令curl -I http://192.168.200.102)

    yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make

    useradd -M -s /sbin/nologin nginx

    tar xf nginx-1.16.1.tar.gz -C /usr/src/

    cd /usr/src/nginx-1.16.1/

     vim src/core/nginx.h

    #define NGINX_VERSION "1.16.1"  (修改版本号)
    #define NGINX_VER "nginx/" NGINX_VERSION  (修改服务名)

    2修改配置文件(已安装nginx)

    vim /usr/local/nginx/conf/nginx.conf

    在http内添加一条,隐藏版本号

     server_tokens off;

    (在源码包已经隐藏版本号的情情况下,再修改主配置文件,会显示服务名,但不显示服务版本号)

    如果php配置文件中配置了fastcgi_param SERVER_SOFTWARE选项,则编辑php-fpm配置文件,将fastcgi_param SERVER_SOFTWARE对应值修改为fastcgi_param SERVER_SOFTWARE nginx;(除了隐藏nginx的版本以外,php的版本也要隐藏)

    二、修改Nginx用户与组

    1编译安装时指定

     useradd -M -s /sbin/nologin nginx

    ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install

    2修改配置文件

    vim /usr/local/nginx/conf/nginx.conf

    user  nginx nginx;  (修改用户和[组]组可以省略)

    killall -HUP nginx

    三、配置Nginx网页缓存时间

    一般针对静态网页进行设置,对动态网页不用设置缓存时间,因为动态网页在服务器上不是完整的存在

    设置方法:可修改配置文件,在http段、或server段、或location段加入对特定内容的过期参数

    编辑主配置文件,添加以下内容

    vim /usr/local/nginx/conf/nginx.conf

    location ~ .(gif|jpg|jpeg|png|bmp|ico)$ {
    expires 1d;
    }
    location ~ .*.(js|css)$ {
    expires 1h;
    }

     killall -HUP nginx

    四、实现Nginx的日志切割

    日志存放位置/usr/local/nginx/logs/access.log

    vim /opt/cut_nginx_log.sh

    #!/bin/bash

    # cut_nginx_log.sh

     

    datetime=$(date -d "-1 day" "+%Y%m%d")      (变量为前一天的完整时间)

    log_path="/usr/local/nginx/logs"          (定义日志存放位置变量)

    pid_path="/usr/local/nginx/logs/nginx.pid"      (定义PID文件变量)

    [ -d $log_path/backup ] || mkdir -p $log_path/backup  (如果P没有backup这个文件,则创建)

    if [ -f $pid_path ]                    (如果Nginx在运行,有PID文件)

    then

            mv $log_path/access.log $log_path/backup/access.log-$datetime    (移动现有日志文件到backup内,叫做access.log-一天前的日期)

            kill -USR1 $(cat $pid_path)                        (重新生成新的空白日志文件)

            find $log_path/backup -mtime +30 | xargs rm -f              (寻找backup内30天修改过的文件删除)

    else

            echo "Error,Nginx is not working!" | tee -a /var/log/messages        (输出Error,Nginx is not working!并且写入系统日志messages内)

    fi

    chmod +x /opt/cut_nginx_log.sh  

    设计周期性计划任务

    crontab -e

    0  0  *  *  *  /opt/cut_nginx_log.sh

    五、配置Nginx实现连接超时

     修改主配置文件 vim /usr/local/nginx/conf/nginx.conf

    在http内添加

     keepalive_timeout  65;  (设置连接保持超时时间,一般可只设置该参数,默认为65秒,可根据网站的情况设置,或者关闭,可在http段、server段、或者location段设置。

     client_header_timeout 60;  (指定等待客户端发送请求头的超时时间。)

     client_body_timeout 60;    (设置请求体读取超时时间。)

     killall -HUP nginx

    六、更改Nginx运行进程数

    修改配置文件的worker_processes参数,一般设置为CPU的个数或者核数(也可两倍)

    1 全局配置 (在括号之外的内容)

    user nginx [nginx];  运行用户(nginx组可以不用写)

    worker_processes 2;   指定工作进程数量 (一般都是按照核心数指定一比一)

    worker_cpu_affinity 01 10;  (指定CUP分配。如果四核0001 0010 0100 1000)

    worker_rlimit_nofile 102400;  (指定Nginx一个进程打开的最多文件数目,理论值应该是最多打开文件数【ulimit -n查看,修改:ulimit -n 新值】【ulimit -u 最大用户进程数,修改:ulimit -u 新值】这两个值最好一样,现在是临时修改,永久修改把这两条命令放在/etc/profile内)

    error_log logs/error.log;  (错误日志存放位置)

    pid logs/nginx.pid;  (进程PID存放位置)

    2 I/O事键 (events括号内的内容)

    use epoll;  (使用epoll模型,对于2.6以上的内核,建议使用epoll模型以提高性能)

    worker_connections 1024;  (工作连接数量,一般工作中配置为4096。单个工作进程并发数量,服务器总并发数量为工作进程数X工作连接数) 

    killall -HUP nginx

    七、配置Nginx实现网页压缩功能

    在http内添加

    Nginxngx_http_gzip_module压缩模块提供了对文件内容压缩的功能,允许nginx服务器将输出内容发送到客户端之前进行压缩

    修改主配置文件 vim /usr/local/nginx/conf/nginx.conf

    gzip  on;    (开启gzip压缩输出)

    gzip_min_length 1k;    (用于设置允许压缩的页面最小字节数【大于1K文件要压缩】

    gzip_buffers 4 16k;    (表示申请4个单位为16k的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来储存gzip压缩结果)

    gzip_http_version 1.1;    (设置识别http协议版本,默认是1.1)

    gzip_comp_level 2;    (gzip压缩比,1-9等级)

    gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss;    (压缩类型,是就对哪些网页文档启用压缩功能)

    #gzip_vary  on;    (选项可以让前端的缓存服务器经过gzip压缩的页面)

     killall -HUP nginx

    八、配置Nginx实现防盗链功能

    资源主机设置防盗链

     配置说明

    valid_referers 设置信任网站

    none 浏览器中referer(Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理)为空的情况,就直接在浏览器访问图片

    blocked referer不为空的情况,但是值被代理或防火墙删除了,这些值不以http://或https://开头

     修改主配置文件 vim /usr/local/nginx/conf/nginx.conf 

    在server内添加

     location ~* .(wma|wmv|asf|mp3|mmf|zip|rar|jpg|gif|png|swf|flv)$ {    (匹配以这些格式结尾的)

                valid_referers none blocked *.source.com source.com;    (设置信任的网站)

                if ($invalid_referer) {                    (判断除了信任以外的)

                    rewrite ^/ http://www.source.com/error.jpg;          (转到一个错误图片上)

                    #return 403;

                }

            }

     killall -HUP nginx 

    九、对FPM模块进行参数优化

    pm    (使用哪种方式启动fpm进程,可以说static和daynamic,前者将产生固定数量的fpm进程,后者以动态的方式产生fpm进程)

    pm._max_children  (static放手机下开启的fpm进程数)

    pm.start_servers    (动态方式下初始的fpm进程数量)

    pm.min_spare_servers  (动态方式下最最小的fpm空闲进程数)

    pm.max_spare_servers    (动态方式下最大的fpm空闲进程数)  

    vim /usr/local/php5/etc/php-fpm.conf

    pm = dynamic

    pm.start_servers = 5

    pm.min_spare_servers = 2

    pm.max_spare_servers = 8

    十、Nginx为目录添加访问控制

    用户访问控制:使用apache的htpasswd创建密码文件

    yum -y install httpd-tools  (安装httpd-tools)

    htpasswd -c /usr/local/nginx/.htpasswd laowang  (指定一个保存用户和密码的位置 。-c是创建,如果创建一次之后,以后不可以再加-c,会覆盖原文件)

    vim /usr/local/nginx/conf/nginx.conf

     location /status {

    stub_status on;  
    access_log off;  
    auth_basic "NginxStatus";     (basic为认证类型,一种为摘要认证,另一种为基本【基准认证】认证,basic为基本认证,摘要 认证很多浏览器不支持) 
    auth_basic_user_file /usr/local/nginx/.htpasswd;  (指定认证文件名)
    }

     killall -HUP nginx 

    客户端地址访问控制:

    vim /usr/local/nginx/conf/nginx.conf

    在上一条location里添加

    allow IP;  (允许IP)

    deny IP;  (拒绝IP)

    也可添加网段短格式,192.168.200.0/24

    十一、自定义错误页面

    vim /usr/local/nginx/conf/nginx.conf

    在server内添加

    error_page 403 404              /404.html;

            location = /404.html {

                root html;

            }

    建立错误 页面文件(根据要求定义页面内容)

    vim  /usr/local/nginx/html/404.html

     killall -HUP nginx 

    十二、自动索引

     cd /usr/local/nginx/html/  (进入nginx网页存放目录)

    mkdir  123/abc{1..10} -p  (在文件夹内创建abc1-10个文件夹)

    touch 123/abc1/1.txt    (建立测试文件)

    编辑主配置文件

    vim /usr/local/nginx/conf/nginx.conf

    在server内添加

     location /123 {

            autoindex on;

            }

     killall -HUP nginx 

     当访问123的时候会显示目录,点击可以下载目录内内容

    十三、通过UA实现手机端和电脑端的分离

    实现nginx区分pc和手机访问不同的网站,是两套网站,移动和PC各一套,两套网站需要单独维护

    一套PC版放在/usr/loca/nginx/html/web,一套移动版放在/usr/local/nginx/htnl/mobile

    1移动端访问,实现不同的客户端访问不同内容(判断 $http_user_agent 【有浏览器和客户端相关信息】变量

    cd /usr/local/nginx/html  (进入网页存放目录)

    mkdir web mobile      (建立两个文件夹)

    vim web/index.html      (建立pc端访问页面)

    vim mobile/index.html    (建立手机端访问页面)

    vim /usr/local/nginx/conf/nginx.conf  (修改主配置文件)

    location / {

      root /usr/local/nginx/html/web;  默认PC端访问内容) 

       if ( $http_user_agent ~ "(MIDP)|(WAP)|(UP.Browser)|(Smartphone)|(Obigo)|(Mobile)|(AU.Browser)|(wxd.Mms)|(WxdB.Browser)|(CLDC)|(UP.Link)|(KM.Browser)|(UCWEB)|(SEMC-Browser)|(Mini)|(Symbian)|(Palm)|(Nokia)|(Panasonic)|(MOT-)|(SonyEricsson)|(NEC-)|(Alcatel)|(Ericsson)|(BENQ)|(BenQ)|(Amoisonic)|(Amoi-)|(Capitel)|(PHILIPS)|(SAMSUNG)|(Lenovo)|(Mitsu)|(Motorola)|(SHARP)|(WAPPER)|(LG-)|(LG/)|(EG900)|(CECT)|(Compal)|(kejian)|(Bird)|(BIRD)|(G900/V1.0)|(Arima)|(CTL)|(TDG)|(Daxian)|(DAXIAN)|(DBTEL)|(Eastcom)|(EASTCOM)|(PANTECH)|(Dopod)|(Haier)|(HAIER)|(KONKA)|(KEJIAN)|(LENOVO)|(Soutec)|(SOUTEC)|(SAGEM)|(SEC-)|(SED-)|(EMOL-)|(INNO55)|(ZTE)|(iPhone)|(Android)|(Windows CE)|(Wget)|(Java)|(curl)|(Opera)" )

    {

    root /usr/local/nginx/html/mobile;   如果是手机移动端访问内容

    }

     index index.html index.htm;

    }

    killall -HUP nginx

    2不同浏览器访问到不同的页面

    mkdir firefox msie

    vim firefox/index.html

    vim msie/index.html

    vim /usr/local/nginx/conf/nginx.conf

    location / {

            if ($http_user_agent ~ Firefox) {    (如果浏览器匹配Firefox访问firefox)

                root /usr/local/nginx/html/firefox;

            }

            if ($http_user_agent ~ MSIE) {    (如果浏览器匹配MISE访问msie)

                root /usr/local/nginx/html/msie;

            }

                index  index.html index.htm;

            }

    killall -HUP nginx

     

  • 相关阅读:
    2020/10/25周总结
    软件需求---河北省重大需求进度报告05
    软件需求---河北省重大需求进度报告04
    软件需求---河北省重大需求进度报告03
    软件需求---河北省重大需求进度报告02
    解决js字符串传参未定义的问题
    软件需求---河北省重大需求进度报告
    2020/10/18周总结
    环信EaseUI集成IM即时通信
    第十二周学习进度总结
  • 原文地址:https://www.cnblogs.com/shinian12138/p/11529400.html
Copyright © 2011-2022 走看看