nginx安装,解析,优化,动静分离

安装

  • 首先需要安装pcre库
    安装pcre支持rewrite库,也可以安装源码,注*安装源码时,指定pcre路径为解压
    源码的路径,而不是编译后的路径,否则会报错。

  • 查看是否安装了nginx:cd /usr/local/ngi^C

  • 下载nginx:wget http://nginx.org/download/nginx-1.6.2.tar.gz
  • 解压:tar xzf nginx-1.6.2.tar.gz
  • 打开解压后的目录:cd nginx-1.6.2
  • 查看参数:./configure –help|more
  • 编译:./configure –user=www –group=www –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module

如果报:./configure: error: C compiler cc is not found
输入命令:yum -y install gcc-c++

-

如果报:./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using –without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using –with-pcre= option.
命令:yum install pcre-devel -y

-

如果报:./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL library
into the system, or build the OpenSSL library statically from the source
with nginx by using –with-openssl= option.
命令:yum -y install openssl openssl-devel

显示如下编译成功

Configuration summary
  + using system PCRE library
  + using system OpenSSL library
  + md5: using OpenSSL library
  + sha1: using OpenSSL library
  + using system zlib library

  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx configuration prefix: "/usr/local/nginx/conf"
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"
  • 安装: make ;make install
  • 检查配置文件是否正确:/usr/local/nginx/sbin/nginx -t

    如果报:nginx: [emerg] getpwnam(“www”) failed
    命令:useradd www

  • 启动:/usr/local/nginx/sbin/nginx

  • 查看进程:ps -ef|grep nginx

出现:www 5946 5945 0 May28 ? 00:00:00 nginx: worker process

启动成功,访问地址
这里写图片描述

  • 平滑重启:(先看配置有没有问题:/usr/local/nginx/sbin/nginx -t):/usr/local/nginx/sbin/nginx -s reload不会杀掉用户
  • 关闭:pkill -9 nginx
  • 查看版本号:/usr/local/nginx/sbin/nginx -v
  • 查看参数:/usr/local/nginx/sbin/nginx -V

Nginx多站点配置

在真实的服务器环境,为了充分利用服务器资源,一天nginxweb服务器同时会配置多个虚拟域名主机,即多个域名对同样一个80端口。然后服务器IP数量很多,可以配置基于多个IP对应同一个端口

server {
        listen       80;
        server_name  www.anotherpractice.cn;
        location / {
            root   html;
            index  index.html index.htm;
        }


    }
server {
        listen       80;
        server_name  www.anotherpractice.cn;
        location / {
            root   html;
            index  index.html index.htm;
        }


    }

Nginx配置文件详解

#user  nobody;
worker_processes  1;
worker_cpu_affinity 00000001;
worker_rlimit_nofile 1024;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    use epoll;
    worker_connections  1024;
    multi_accept on;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    tcp_nodelay on;

    gzip on;

    gzip_min_length 1k;

    gzip_http_version 1.1;

    gzip_comp_level 4;

    client_max_body_size 10m;

    client_body_buffer_size 128k;

    proxy_connect_timeout 120;

    proxy_send_timeout 90;

    proxy_read_timeout 90;

    proxy_buffer_size 4k;

    expires 3d;

    server {
        listen       80;
        server_name  www.anotherpractice.cn;
        location / {
            root   html;
            index  index.html index.htm;
        }


    }

}
  • 定义Nginx运行的用户和用户组

    user www www;

    -启动进程,通常设置和CPU的数量相等

    worker_processes 8;

  • 为每个进程分屏cpu,或者将一个进程分配到多个cpu

    worker_cpu_affinity 00000001;

  • 这个指令是指当一个nginx进程打开的最多的文件描述数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致

worker_rlimit_nofile 102400;

  • epoll是多路复用IO(I/OMultiplexing)中的一种方式,但是仅用于linux2.6以上的内核,可以大大提高nginx的性能

use epoll;

  • 单个后台 worker process进程的最大并发连接数(最大连接数=连接数*进程数)

    worker_connections 1024;

  • 尽可能多的接受请求

    multi_accept on;

  • sendfile指令指定nginx是否调用sendfile函数(zero copy 方式)来输出文件,对于普通的应用必须设置为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为ogg,以平衡磁盘与网络I/O处理的速度,降低uptime

sendfile on;

  • keepalive超过时间,客户端到服务端的连接持续有效时间,当出现对服务的后续请求是,keepalive-timeout功能可避免建立或重新建立连接

keepalive_timeout 60;

  • 提高数据的实时响应性

    tcp_nodelay on;

  • gzip 压缩:压缩级别大小,最大为9,值越小,压缩后比例越小,cpu处理更快。值越大,消耗CPU比较高

开启gzip压缩
gizp on;
gizp_min_length 1kl
gizp_buffers 416k;
gizp_http_version 1.1;
gzip_comp_level 4;(4或者6)

  • 允许客户端请求的最大单文件字节数

client_max_body_size 10m;

  • 缓冲区代理缓冲用户端请求的最大字节数

client_body_buffer_size 128k;

  • Nginx跟后端服务器连接超时时间(代理连接时间)

proxy_connect_timeout 90;

  • 后端服务器数据回传时间(代理发送超时)

proxy_send_timeout 90;

  • 连接成功后,后端服务器响应时间(代理接收超时)

proxy_read_timeout 90;

  • 设置代理服务器(nginx)保存用户头信息的缓冲区大小

proxy_buffer_size 4k;

  • expires定义胡勇浏览器缓存时间为3天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器压力

expires 3d;

nginx优化方法

  1. work_process、CPU亲和性
  2. 选择epoll模型
  3. work_connects连接数
  4. 每个进程打开文件最大数
  5. Keepalive timeout会话保持时间
  6. GZIP压缩级别
  7. proxy超时时间
  8. expires 3d;浏览器缓存过期时间
  9. Nginx动静分离

动静分离

Nginx动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离

动静分离从目前实现的角度来讲大致分为两种

  1. 一种是纯粹的把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案
  2. 动态跟静态文件混合在一起发布,通过nginx来分开
发布了73 篇原创文章 · 获赞 70 · 访问量 21万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览