本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • Nginx
  • 【Nginx配置教程】Nginx-1.13.10编译安装与配置教程

【Nginx配置教程】Nginx-1.13.10编译安装与配置教程

发布:TangLu2018-9-13 12:22分类: Nginx 标签: Nginx

Nginx相比Apache、IIS等Web Server来说,有以下优势:

1、Nginx使用epoll事件驱动模型(异步非阻塞),I/O多路复用(多个I/O操作能在一个线程内交替完成,复用就是指线程的复用)使得性能十分卓越

2、Nginx配置较轻量级,功能模块化,上手容易

3、Nginx支持CPU亲和,让不同的Nginx进程绑定在不同的CPU核心上,减少CPU切换带来的性能损耗

4、Nginx使用了sendfile传输,对文件的传输从内核空间完成,不再经过用户空间,加快响应

5、支持4层和7层反向代理


本文将以Nginx-1.13.10版本为例,对Nginx的编译安装与基本配置做一个介绍


一、编译安装Nginx-1.13.10

1、在安装Nginx之前需要确保系统里已经安装好相关环境,包括pcre库(提供正则表达式和Rewrite模块的支持)、zlib库(提供Gzip压缩)、openssl库(提供ssl支持),使用yum直接安装这些依赖环境即可,不需要额外编译:

yum  install  pcre  pcre-devel  openssl  openssl-devel  zlib  zlib-devel  -y

2、为Nginx创建好用户和用户组,编译时会用上这个信息,后面启动服务时也会指定该用户

groupadd nginx
useradd -s /sbin/nologin -g nginx nginx 


3、进入Nginx源码包后运行configure脚本来编译安装Nginx1.13,其他版本的编译语法基本一样

./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--sbin-path=/usr/local/nginx/sbin/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--error-log-path=/usr/local/nginx/logs/error.log \
--http-log-path=/usr/local/nginx/logs/access.log \
--pid-path=/usr/local/nginx/nginx.pid \ 
--with-pcre \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gzip_static_module \
--with-http_stub_status_module

make && make install


#--prefix=path:设置Nginx的安装路径,不写的话默认是在/usr/local/nginx
#--sbin-path=path:设置Nginx的可执行文件路径,默认路径是prefix/sbin/nginx
#--conf-path=path:设置Nginx配置文件路径,默认路径是prefix/conf/nginx.conf
#--pid-path=path:设置Nginx pid文件路径,默认路径是prefix/logs/nginx.pid
#--error-log-path=path:设置错误日志存放路径,默认路径是prefix/logs/error.log
#--http-log-path=path:设置访问日志存放路径,默认路径是prefix/logs/access.log
#--user=name:设置运行Nginx的用户,默认用户是nobody
#--group=name:设置运行Nginx的用户组,默认用户组是nobody
#--with-http_ssl_module:启用Nginx的SSL功能
#--with-http_realip_module:该模块可以记录原始客户端的IP而不是负载均衡的IP
#--with-http_sub_module:文字内容替换模块,可用于替换全站敏感字等
#--with-http_flv_module:开启对FLV格式文件的支持
#--with-http_mp4_module:开启对MP4格式文件的支持
#--with-http_gzip_module:提供对gzip压缩的支持
#--with-http_stub_status_module:开启Nginx状态监控模块
#--with-pcre:支持正则表达式

#--with开头的选项通常是开启一些模块,而带有temp的选项一般是执行对应模块时产生的临时文件所存放的路径


小提示:源码包中有一个contrib/vim目录,把该目录的所有文件拷贝到用户家目录的vim目录,可以实现nginx.conf配置文件的语法高亮,非常好用

co -r contrib/vim/* ~/.vim/


二、Nginx的基本配置

1、Nginx编译安装完成后会在安装目录中创建以下子目录:
sbin : 存放Nginx的二进制程序:
/usr/local/nginx/sbin/nginx  -t  #检查配置文件是否有错
/usr/local/nginx/sbin/nginx  -v  #查看Nginx版本
/usr/local/nginx/sbin/nginx  -V  #查看Nginx安装时所用的编译选项,使用yum安装的也可以看到
/usr/local/nginx/sbin/nginx  -s  #发送信号,如stop、restart、reload、reopen
/usr/local/nginx/sbin/nginx  -c  #指定其他配置文件来启动nginx

conf:存放Nginx配置文件
logs:存放Nginx日志文件存放目录

html:存放Nginx网页文件,通常会定义到其他目录,不会直接使用它


2、Nginx主配置文件语法结构(根据上面的编译安装参数,这个文件就是/usr/local/nginx/conf/nginx.conf):

· Nginx的主配置文件由指令与指令块构成,指令块以{ }大括号将多条指令组织在一起

· 每条指令以;分号结尾,指令与参数间用空格分隔

· 支持include语句组合多个配置文件,提升可维护性

· #表示注释,$表示变量,部分指令的参数支持正则表达式


其中main和events都是全局性标签,而server标签负责了每个虚拟主机的配置,在server标签中还存在location标签根据条件匹配来对不同的访问路径做不同的配置,如进行URL转发等。在看配置文件之前先提前了解下location标签的匹配规则,需要注意书写波浪号是在中间而不是顶部

=  #精确匹配,优先级最高
^~  #普通字符串匹配,禁止正则表达式,当匹配成功后停止其他location匹配,优先级高于正则
~  #区分大小写的正则匹配
~*  #不区分大小写的正则匹配


3、Nginx主配置文件参数详解:
user nginx;  #运行Nginx的用户
worker_processes  2;    #开启的进程数,通常和cpu个数相等或者设置为auto
worker_cpu_affinity auto;  #自动进行CPU亲和设置
#worker_cpu_affinity 0000000000000001 000000000000010 #手动进行CPU亲和设置
error_log  logs/error.log warn;  #Nginx服务的错误日志路径与记录级别
pid  /var/run/nginx.pid;
worker_rlimit_nofile 65535;  #设置Nginx进程文件句柄数
events {
    worker_connections  10240;    #每个进程的并发数
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    charset utf-8;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';  #定义日志格式,所支持的全部变量可以在官方文档里查询
    access_log  logs/access.log  main;  #访问日志存放路径与日志记录格式,这里main就是上一步log_format所定义的main
    sendfile        on;
    tcp_nopush     on;  #一次传输多个数据包,提高传输效率
    #tcp_nodeley    off  #与tcp_nopush相反,实时性要求比较高的场景会打开这个
    keepalive_timeout  65;    #长连接超时时间为65秒
    gzip  on;  #打开gzip后通过浏览器开发者工具-网络功能可以看到size大小被压缩了,对文本类型的文件压缩效率最高,可作用于location中
    include /etc/nginx/conf.d/*.conf  #conf.d目录下的配置文件也会生效
    server {
        listen       80;
        server_name  localhost;  #精确匹配优先级最高,支持正则匹配,如果都不匹配则匹配default server
        #charset koi8-r;
        access_log  logs/access.log  main;  #单独对主机记录日志
        location ~ .*\.(jpg|gif|png)$ {
            gzip  on;
            expires 24h;  #开启缓存,如果是取的缓存数据,浏览器开发者工具中返回状态是304
            root   html;
            index  index.html index.htm;
        }
        #error_page  404              /404.html;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }



温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《【Nginx配置教程】Nginx-1.13.10编译安装与配置教程
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-168.html  [生成短网址]

已有 0/3648 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~