Nginx的安装及其一些配置

nginx的编译安装

  •    tar xf nginx-1.12.2.tar.gz
  •   cd nginx-1.12.2
  •     yum install pcre-devel
  •  ./configure –help
  •   groupadd -r nginx
  •     useradd -g nginx -r nginx
  •    id nginx
  •     ./configure –prefix=/usr/local/nginx –conf-path=/etc/nginx/nginx.conf –user=nginx –group=nginx –error-log-path=/var/log/nginx/error.log –http-log-path=/var/log/nginx/access.log –pid-path=/var/run/nginx/nginx.pid –lock-path=/var/log/nginx.log –with-http_ssl_module –with-http_stub_status_module –with-http_gzip_static_module –with-http_flv_module –with-http_mp4_module –http-client-body-temp-path=/var/tmp/nginx/client –http-proxy-temp-path=/var/tmp/nginx/proxy –http-fastcgi-temp-path=/var/tmp/nginx/fastcgi –http-uwsgi-temp-path=/var/tmp/nginx/uwsgi
  •     make && make install
  •  mkdir -pv /var/tmp/nginx/{client,fastcgi,proxy,uwsgi}
  •   ss -tnl
  •   /usr/local/nginx/sbin/nginx
  •   ss -tnl
  •   ss -tnlp
  •    ps aux

Nginx作为web服务时使用的配置指令

1、server { … }  定义一个虚拟主机;

server {   # 配置虚拟主机示例

listen address[:PORT]|PORT;

server_name SERVER_NAME;

root /PATH/TO/DOCUMENT_ROOT;

}

2、listen   指定虚拟主机所监听的端口

listen address[:port]

3、server_name

指明虚拟主机的主机名称; 还可使用正则表达式或通配符

匹配机制:

(1) 先做精确匹配

(2) 左侧通配符匹配检查

(3) 右侧通配符匹配检查

(4) 正则表达式

(5)default server 默认服务器

4、location [ = | ~ | ~* | ^~ ] {…}

功能:允许根据用户请求的URL来匹配定义的各location;匹配到时,此请求将被相应的location配置块中的配置所处理,例如做访问控制等功能。

=:对URI做精确匹配;

~:对URI做正则表达式模式匹配,区分字符大小写

~*:对URI做正则表达式模式匹配,不区分字符大小写

^~:对URI的左半部分做匹配检查,不区分字符大小写

匹配优先级:=, ^~, ~/~*,不带符号

5、alias path;   #定义路径别名,文档映射的另一种机制;仅能用于location上下文

注意:location中使用root指令和alias指令的意义不同

(a) root,给定的路径对应于location中的/uri/左侧的/

(b) alias,给定的路径对应于location中的/uri/右侧的/

6、error_page code … [=[response]] uri;  #定义默认错误页面

[root@nginx1 /etc/nginx/conf.d]#vim vhost1.conf

server {

listen 80;

server_name www.ilinux.io;

root /data/nginx/vhost1;

location / {

#root /data/nginx/vhost2;

allow all;

}

location ~* \.(jpg|png)$ {

deny 172.16.250.217;

allow all;

}

location ^~/images/ {

alias /data/pictures/;

}

error_page 404 /notfound.html;         #如果是404就在notfound.html中

location = /notfound.html {               #如果访问notfound.html

root /data/nginx/error_pages;    #错误页面就在/data/nginx/error_pages/notfound.html中

}

}

[root@nginx1 /etc/nginx/conf.d]#mkdir /data/nginx/error_pages

[root@nginx1 /etc/nginx/conf.d]#vim /data/nginx/error_pages/notfound.html

<h2>——————–</h2>

<h3>notfound</h3>

[root@nginx1 /etc/nginx/conf.d]#nginx -s reload

网络连接相关的配置

7、keepalive_timeout timeout [header_timeout];  #设定保持连接的超时时长,0表示禁止长连接;默认为75s

8、keepalive_requests number;  #在一次长连接上所允许请求的资源的最大数量,默认为100(使用默认值即可)

9、keepalive_disable none | browser …;  #对哪种浏览器禁用长连接

10、send_timeout time;  #向客户端发送响应报文的超时时长,是指两次写操作之间的间隔时长

如客户端发送请求后,由于断电等等原因,无法接收到服务器发送的报文

11、client_body_buffer_size size;  #用于接收客户端请求报文的body部分的缓冲区大小;默认为16k;超出此大小时,其将被暂存到磁盘上的由client_body_temp_path指令所定义的位置

12、open_file_cache off;  # 是否开启缓存

open_file_cache max=N [inactive=time];

nginx可以缓存以下三种信息

(1) 文件的描述符、文件大小和最近一次的修改时间

(2) 打开的目录结构

(3) 没有找到的或者没有权限访问的文件的相关信息

max=N:可缓存的缓存项上限;达到上限后会使用LRU(最近最少使用)算法实现缓存管理

inactive=time:缓存项的非活动时长,在此处指定的时长内未被命中的或命中的次数少于open_file_cache_min_users指令所指定的次数的缓存项即为非活动项

ngx_http_access_module模块:

实现基于ip的访问控制功能

13、allow address | CIDR | unix: | all;(允许)

14、deny address | CIDR | unix: | all;(禁止)

ngx_http_auth_basic_module模块

实现基于用户的访问控制,使用basic机制进行用户认证;

15、auth_basic string | off;

16、auth_basic_user_file file;

注意:htpasswd命令由httpd-tools所提供

ngx_http_stub_status_module模块(nginx内置的内建状态页)

用于输出nginx的基本状态信息;

Active connections: 291

server accepts handled requests

16630948 16630948 31070465

Reading: 6 Writing: 179 Waiting: 106

Active connections: 活动状态的连接数;

accepts:已经接受的客户端请求的总数;

handled:已经处理完成的客户端请求的总数;

requests:客户端发来的总的请求数;

Reading:处于读取客户端请求报文首部的连接的连接数;

Writing:处于向客户端发送响应报文过程中的连接数;

Waiting:处于等待客户端发出请求的空闲连接数;

17、stub_status;

18、log_format name string …; #日志格式

string可以使用nginx核心模块及其它模块内嵌的变量;

$bytes_sent:发送到客户端的字节数

$connection:连接序列号

$connection_requests:目前一些通过连接发出的请求(1.1.18)

$msec:时间与一个毫秒分辨率秒日志写入的时间

$pipe:”p”如果请求被流水线

$request_length:请求长度

$request_time:请求处理时间在毫秒分辨率秒; 第一字节之间经过的时间是从在客户端和日志写入读出之后,最后的字节被发送到客户端

$status:响应状态

$time_iso8601:在ISO 8601标准格式的本地时间

$time_local:在通用日志格式的本地时间

19、access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];   #访问日志文件路径,格式及相关的缓冲的配置;

access_log off;

Default:access_log logs/access.log combined;

Context:http, server, location, if in location, limit_except

访问日志文件路径,格式及相关的缓冲的配置;

buffer=size

flush=time

[root@nginx1 /etc/nginx/conf.d]#vim vhost1.conf

server {

listen 80;

server_name www.ilinux.io;

root /data/nginx/vhost1;

access_log /var/log/nginx/vhost1_access.log main; 定义在server中,对整个文件有效

[root@nginx1 /etc/nginx/conf.d]#nginx -s reload

[root@nginx1 /etc/nginx/conf.d]#tail /var/log/nginx/vhost1_access.log   查看日志

172.16.254.217 – tom [14/Jul/2017:22:02:12 +0800] “GET /images/fish.jpg HTTP/1.1” 304 0 “-” “Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0” “-”

172.16.254.217 – tom [14/Jul/2017:22:04:33 +0800] “GET /images/2560×1600.jpg HTTP/1.1” 404 48 “-” “Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0” “-”

172.16.254.217 – tom [14/Jul/2017:22:05:29 +0800] “GET / HTTP/1.1” 304 0 “-” “Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0” “-”

172.16.254.217 – tom [14/Jul/2017:22:05:43 +0800] “GET /admin/ HTTP/1.1” 304 0 “-” “Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0” “-”

对于某个location使用单独的访问日志,以admin为例

location ~* ^/(admin|login) {

auth_basic “admin area or login url”;

auth_basic_user_file /etc/nginx/.ngxpasswd;

access_log /var /log/nginx/vhost1_access.log main;

}

ngx_http_gzip_module

The ngx_http_gzip_module module is a filter that compresses responses using the “gzip” method. This often helps to reduce the size of transmitted data by half or even more.(ngx_http_gzip_module模块是一个过滤器,压缩响应使用“gzip”方法。这通常有助于将传输数据的大小减少一半甚至更多。)

20、gzip on | off;

Default: gzip off;

Context: http, server, location, if in location

Enables or disables gzipping of responses.(启用或禁用Gzipping反应)

是否启用gzip压缩响应报文;不是所有浏览器都支持压缩机制

原创文章,作者:nene,如若转载,请注明出处:http://www.178linux.com/88058

(0)
上一篇 2017-10-25 09:19
下一篇 2017-10-25 23:51

相关推荐

  • linux 学习之权限优先级

    linux下对同一文件的权限分成很多类,同时也可能对同一文件权限配置多种权限那么在这么多配置中,到底是怎么生效的呢?比如一个文件abc.txt属于wang用户,而同时对abc.txt又设置了ACL禁止 wang用户读写执行等等这些情况就是ACL的生效顺序完全理解,模拟出实验环境一一验证1,文件a属于mage用户,但ACL限制 mage读写执行 Paste_I…

    Linux干货 2017-05-29
  • N25第十周博客作业

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情)        (1)post:加电自检                主要是bios完成,检查主机各个组件是否完好,能否达到运行要求;    &…

    Linux干货 2017-03-10
  • Linux初探

    1.计算机组成: CPU:运算器(指令集)、控制器、寄存器、缓存; 存储器:内存,RAM; Input:下指令,提供数据; Ouput:输出数据加工的结果 一般来说,从磁盘中读取程序和数据放到内存中排队,由cpu从内存中读取执行。由于cpu处理速度远大于磁盘的I/O速度,因此引入缓存。在计算机中有缓存为王这个说法。 2.操作系统的背景: 1.统一规范 2.由…

    Linux干货 2016-10-30
  • ​文本编辑器nano

    新建/打开文件     nano 路径+文件名,文件存在则为打开,否则新建;(未输入文件名,编辑完成后,保存退出会提示输入文件名); nano     note:nano中,黑底白字表示快捷键操作。其中“^”表示Ctrl键,则Ctrl+G就表示成“^G”。“M”表示 Alt键,则Alt+W表示为“M…

    Linux干货 2016-05-05
  • shell脚本编程初步

    shell脚本编程初步    随着课程学习的深入,我们已经学习了一些常用的命令,会去解决了一部分简单的问题,但是这不能满足复杂的工作,它可以帮助我执行自动化的常用命令、执行系统管理和故障排除、创建简单的应用程序、处理文本或文件。所以我们开始了shell脚本的编程,帮助我们更好的去完成工作。简单地说,shell编程相当于帮我们之前…

    Linux干货 2016-08-15
  • suid, sgid, sticky简介

    SUID属性 passwd命令可以用于更改用户的密码,一般用户可以使用这个命令修改自己的密码。但是保存用户密码的/etc/shadow文件的权限是000,也就是说只有文件的所有者root用户可以写入,那为什么其他用户也可以修改自己的密码呢?这就是由于Linux的文件系统中的文件有SUID属性。 [root@centos6 ~]# ll /etc/shadow…

    Linux干货 2017-07-27