nginx web优化

9 篇文章 0 订阅

nginx web优化

web服务器的优化

全局配置的优化

1.nginx 启动账户

  • 以nginx用户身份启动,但是nginx作为系统账户,普通账户的身份启动。
  • 启动账户改为公司规定的指定账户。
[root@nginx ~]#  useradd nginx -s /sbin/nologin -u 2000
  • user nginx;

2.工作进程与CPU绑定,取消工作进程在多CPU之间来回切换导致的不必要的内存和CPU开销.

  • worker_processes 2;
  • worker_cpu_affinity 0001 0010;

3.调整nice值,以让nginx尽可能获得更多的运行时间

  • worker_priority 0;
  • 此值一般不会调整,生产环境一般一个服务器只运行一个服务器(LAP一般还是部署在同一服务器上)

events

4.指定Nginx使用的事件模型 epoll

  • use epoll;

5.允许一个工作进程同一时刻可以接受多个用户的链接请求

  • multi_accept on;

6.修改单个工作进程的最大连接数,nginx总连接数为工作进程数量*单个工作进程最大连接数,在反向代理情况下 1/2。

  • worker_connections 65536;

http

7.开启文件零拷贝

  • sendfile on; #此选项作为web服务一定开启(默认开启)
  • 注:对于零拷贝的文件一定是nginx服务器自身产生的,并不是从后端服务器(PHP或Java)发过来的(比如文件是从Java服务器发送过来的,此文件是不生效的),文件一定是nginx自身产生的(无论文件是放置于本地磁盘还是后端服务器共享),只要是nginx本身产生的文件就能实现零拷贝。

8.是否启用响应报文合并及延迟发送,一般使用开启报文合并且不延迟发送数据。与sendfile连用

  • tcp_nopush on;
  • tcp_nodelay off;

9.是否开启文件压缩,一般开启。

  • gzip on; 可节省公司的出口带宽。

10.设置会话保持时间,通常是60秒左右。

  • keepalive_timeout 65 65;

11.隐藏nginx版本号

  • server_tokens off;
  • ②再server_tokens off;想将nginx也修改。修改nginx源码,将server自定义。
nginx的源码文件中修改:
[root@centos7-17 nginx-1.16.1]# vim src/http/ngx_http_header_filter_module.c
...
static u_char ngx_http_server_string[] = "Server: myweb" CRLF;
...
    ==>此处我将server自定义为myweb


然后重新编译安装nginx即可。

server

12.更改server_name和编码格式为utf-8、监听地址

  • server_name 域名;
  • charset utf-8;
  • listen 80;

13.在定义访问日志格式和错误日志路径

  • 一般使用定义json格式的日志,以便于日志收集和分析

14.自定义错误界面显示

  • error_page 500 502 503 504 /50x.html; #定义错误页面
  • error_page 404 /404.html;

15.可能设计安全原因拒绝访问某些文件

  • 定义某种后缀名称的文件拒绝所有人访问或者某目录
  • location ~ /.ht {
  • deny all;
  • }

16.实现动静分离

  • 实现动静分离的方式:
    ①基于用户请求的URI或者后缀名实现动静分离
    ②通常会使用UTI来实现将JAVA的请求转发至JAVA服务器处理(访问一个路径的话,往后端服务器转发)
    ③通常会使用后缀名实现PHP的转发
具体实现方式:
①Java程序:定义一个location,如果访问比如:http://www.rootzcp.com/app1/ 、
    location  /app1{..}
    访问app1目录下的均代表Java程序,往后的服务器Tomcat转发。


②PHP程序:
    定义location ~*  \.php${...}
    以php结尾的文件为php程序,往后端php程序服务器转发


③静态资源:
    location ~* \.(gif|jpg|jpeg|bmp|png|tiff|tif|ico|wmf|js)$ {..  }
    以这些后缀结尾的为静态资源,在后端存储服务器去调用资源

17.https的实现

  • 全栈https或者登录和交易安全隐私时实现https
server {

    server_name server-name;
    listen 443 ssl;
    ssl_certificate /path/to/file;
    ssl_certificate_key /path/to/file;
    ssl_session_cache shared:sslcache:20m;
    ssl_session_timeout 10m;

}
  • 基于虚拟主机头实现https(一个IP多域名https)
    nginx支持SNI(Server Name Indication)功能,因此能实现同一个IP多域名的https,:Apache不支持此功能
~]# nginx -V
TLS SNI support enabled

18.openssl版本升级

  • openssl的版本可能不能满足要求,https的实现时可能需要将openssl版本升级,可将openssl作为nginx的第三方模块升级
--with-openssl=DIR(openssl 源码包所在路径)
加上这个openssl较新版本的选项,重新编译安装nginx


查看openssl版本:
nginx-1.16.1]# nginx -V
....
built with OpenSSL 1.1.1d  10 Sep 2019
....

19.nginx rewrite

  • 优化主要将http重定向为https
# 全栈https
#       if ( $scheme = http ) {
#           rewrite / https://www.rootzcp.com permanent;
#       }
#   }
只要使用http 就将http重写为https


部分目录使用https:
    location /login {
        root /data/nginx/html/;
        index index.html;
        if ( $scheme = http ) {
            rewrite / https://www.rootzcp.com/ permanent;
        }
        auth_basic "Login Authentication";
        auth_basic_user_file /data/nginx/html/login/.htpasswd;
    }
只要是访问http://www.rootzcp.com/login 此目录,重写为https

20.防盗链
①正常访问某个资源的方式:

  • none:请求报文首部没有referer首部,比如用户直接在浏览器输入域名访问web网站,就没有referer信息。
  • blocked:请求报文有referer首部,但无有效值,比如为空。
  • server_names:referer首部中包含本主机名及即nginx 监听的server_name。
  • arbitrary_string:自定义指定字符串,但可使用*作通配符。
  • regular expression:被指定的正则表达式模式匹配到的字符串,要使用开头,例如将这样的域名跳转过来的:.*.baidu.com。

②防盗链的作用:

  • 主要是为了节省带宽
  • 一般用于静态资源
location = /A.gif  {
    root /data/nginx/pic;
    index index.html;
    valid_referers none blocked server_names *.rootzcp.com  *.google. *.baidu.com;
    if ( $invalid_referer ) {
        return 403;
    }
}
==>使用referers防止盗链,只放行指定的referers。

21.错误资源重定向至首页(或者重定向至指定页面)

location / {
    root html;
    index index.html;
    if  ( !-f $request_filename ){
        rewrite (.*) http://www.rootzcp.com/index.html;
    }
}

==>注:rewrite (.*) http://www.rootzcp.com/index.html;这个重定向一定具体到某个资源
       rewrite (.*) http://www.rootzcp.com 如果这样写将造成来回重定向,报错。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值