ngx_http_ssl_module
1、ssl on|off;
在虚拟服务器上启动https协议
安全上下文:http,server
2、ssl_certificate file;
指定当前https协议使用的SSL证书,证书需为pem格式。
安全上下文: http,server
3、ssl_certificate_key file;
指定当前https协议所使用证书的私钥文件
安全上下文: http,server
4、ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];
指定支持的ssl协议的版本,默认为后三个
安全上下文: http,server
5、ssl_session_cache off|none|[builtin[:size]] [shared:NAME:size];
用于设置存储ssl会话参数的缓存类型及大小
释义:
builtin[:size]:使用OpenSSL内建的缓存,此缓存为每worker进程私有;
shared:NAME:size:在各worker之间使用一个共享的缓存
安全上下文: http,server
6、ssl_session_timeout time;
设置客户端可复用缓存的会话参数的时间
安全上下文: http,server
示例:
server {
listen 192.168.0.83:443 ssl;
server_name www2.abc.com;
root /data/https;
ssl on;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
ssl_session_cache shared:SSLCACHE:20m;
}
启动nginx报错:
nginx: [emerg] getpwnam("nginx") failed in /usr/local/nginx/conf/nginx.conf:2
是因为配制文件中动用的运转账户在系统中并未找到
化解办法:
useradd -G groupname username
ngx_http_core_module
布署格式:
http {
... ...
server {
...
server_name
root
location [OPERATOR] /uri/ {
...
}
}
server {
...
}
}
大面积配置指令:
与套接字相关的配置:
1、server { ... }
虚拟主机配置字段
安全上下文:http
示例:
server {
listen address[:PORT]|PORT;
server_name SERVER_NAME;
root /PATH/TO/DOCUMENT_ROOT;
}
2、listen address[:port] [default_server] [ssl] [http2|spdy] [backlog=number] [rcvbuf=size] [sndbuf=size];
指定监听的地址和端口等,常用选项:
default_server:设定为默认虚拟主机
ssl:限制仅能够通过ssl连接提供服务
backlog=number:后援队列长度
rcvbuf=size:接收缓冲区大小
sndbuf=size:发送缓冲区大小
安全上下文:server
示例:
# 监听指定的IP及端口
listen 192.168.4.119:80;
# 监听指定端口只能通过SSL
listen 443 ssl;
3、server_name name ...;
指明虚拟主机的主机名称,后可跟多个由空白字符分隔的主机名称;
安全上下文:server
示例:
# 支持*通配任意长度的任意字符
server_name *.test.com www.test.*;
# 支持~起始的字符做正则表达式模式匹配
server_name ~^wwwd+.test.com$
4、tcp_nodelay on | off;
在keepalived模式下的连接是否启用tcp_nodelay选项
安全上下文:http,server,location
5、tcp_nopush on|off;
在sendfile模式下,是否启用选项
安全上下文:http,server,location
6、sendfile on | off;
是否启用sendfile功能
安全上下文:http,server,location,if in location
定义路径相关的配置:
7、root path;
设置web资源路径映射,用于指明用户请求的url所对应的本地文件系统上的文档所在目录路径
安全上下文:http,server,location,if in location
8、location [ = | ~ | ~* | ^~ ] uri { ... }
设置请求的uri对应的资源。在一个server中location配置段可存在多个,用于实现从uri到文件系统的路径映射;ngnix会根据用户请求的uri来检查定义的所有location,并找出一个最佳匹配,而后应用其配置。其中:
=:对uri做精确匹配
^~:对uri的左半部分做匹配检查,不区分字符大小写
~:对uri做正则表达式模式匹配,区分字符大小写
~*:对uri做正则表达式模式匹配,不区分字符大小写
不带符号:匹配起始于此uri的所有的url
@:定义位置名称,实现资源跳转
匹配优先级:=, ^~, ~/~*,不带符号;
安全上下文:server,location
示例:
server {
listen 192.168.4.119:80;
server_name www.test.com;
root /data/web; #设置虚拟主机的web根目录
# = 精确匹配/data/web/test目录下的test.html文件
location = /test.html {
root /data/web/test; #指定location的web根目录
}
# ~ 正则匹配/data/web/aaa目录下带有AAA字符串的文件(区分大小写)
location ~ .*AAA.* {
root /data/web/aaa;
}
# ~* 正则匹配/data/web/bbb目录下带有bbb字符串的文件(不区分大小写)
location ~* .*bbb.* {
root /data/web/bbb;
}
# ^~ 匹配/data/web/www目录下的文件
location ^~ /www {
root /data/web/www
}
}
9、alias path;
定义路径别名,文档映射的另一种机制
安全上下文:location
注意:root指令和alias指令的意义不同,并且不能同时用在同一个location中。
(1) root,给定的路径对应于location中的/uri/左侧的/
(2) alias,给定的路径对应于location中的/uri/右侧的/
10、error_page code ... [=[response]] uri;
指定错误的uri路径
安全上下文:http,server,location,if in location
示例:
#当网页的状态码为404时,跳转到指定的404.html页面
error_page 404 /404.html;
11、try_files file ... uri;
如果指定路径下文件不存在,则跳转到指定的uri或者返回指定状态码。
安全上下文:server,location
示例:
location ~ .*test.* {
try_files test.html /404.html;
}
#尝试打开test.html,如果没有此文件,则返回状态码500
location = /test.html {
try_files test.html =500;
}
定义客户端请求的相关配置
12、keepalive_timeout timeout [header_timeout];
设定保持连接的超时时长,0表示禁止长连接;默认为75s
安全上下文:http,server,location
13、keepalive_requests number;
在一次长连接上所允许请求的资源的最大数量,默认为100
安全上下文:http,server,location
14、keepalive_disable none | browser ...;
对哪种浏览器禁用长连接
安全上下文:http,server,location
15、send_timeout time;
向客户端发送响应报文的超时时长,此处指两次连续写操作之间的间隔时长
安全上下文:http,server,location
16、client_body_buffer_size size;
用于接收客户端请求报文的body部分的缓冲区大小,默认为16k;超出此大小时,其将被暂存到磁盘上的由client_body_temp_path指令所定义的位置
安全上下文:http,server,location
17、client_body_temp_path path [level1 [level2 [level3]]];
设定用于存储客户端请求报文的body部分的临时存储路径及子目录结构和数量,其中level表示存储目录的数量,用16进制表示
安全上下文:http,server,location
示例:
client_body_temp_path /var/tmp/client_body 2 1 1
2:表示用2位16进制数字表示一级子目录:00-ff,共256个一级子目录
1:表示用1位16进制数字表示二级子目录;0-f,共16个二级子目录
1:表示用1位16进数制字表示三级子目录:0-f,共16个二级子目录
对客户端进行限制的相关配置:
18、limit_rate rate;
限制响应给客户端的传输速率,单位是bytes/second,0表示无限制
安全上下文:http,server,location,if in location
19、limit_except method ... { ... }
限制客户端除指定的请求方法之外不能访问服务器
安全上下文:location
示例:
# 限制192.168.4.0/24的客户端只能通过GET请求
limit_except GET {
allow 192.168.4.0/24;
deny all;
}
文件操作优化的配置
20、aio on|off | threads[=pool];
是否启用aio功能
安全上下文:http,server,location
21、directio size | off;
当文件大于等于给定的大小时启用O_DIRECT标记,例如directio 4m;
安全上下文:http,server,location
22、open_file_cache off; 或 open_file_cache max=N [inactive=time];
nginx可以缓存以下三种信息:
(1) 文件的描述符、文件大小和最近一次的修改时间
(2) 打开的目录结构
(3) 没有找到的或者没有权限访问的文件的相关信息
max=N:可缓存的缓存项上限;达到上限后会使用LRU算法实现缓存管理
inactive=time:缓存项的非活动时长,在指定的时长内未被命中的或命中的次数少于open_file_cache_min_uses所指定的次数的缓存项即为非活动项
安全上下文:http,server,location
23、open_file_cache_valid time;
缓存项有效性的检查频率;默认为60s;
安全上下文:http,server,location
24、open_file_cache_min_uses number;
在open_file_cache指令的inactive参数指定的时长内,至少应该被命中多少次方可被归类为活动项,默认为1
安全上下文:http,server,location
25、open_file_cache_errors on | off;
是否缓存查找时发生错误的文件一类的信息,默认为off
安全上下文:http,server,location
1. Nginx安装
第一供给事先安装gcc-g++、PCRE, zlib。PCRE用于重写rewrite,zlib用于gzip压缩
到安装目录下,
下载nginx
wget http://nginx.org/download/nginx-1.5.9.tar.gz
解压
tar -zxvf nginx-1.5.9.tar.gz
踏向到新的目录下
cd nginx-1.5.9
ngx_http_referer_module
valid_referers none|blocked|server_names|string ...;
定义referer首部的合法可用值
释义:
none:请求报文首部没有referer首部;
blocked:请求报文的referer首部没有值;
server_names:参数,其可以有值作为主机名或主机名模式;
arbitrary_string:直接字符串,但可使用*作通配符
regular_expression:被指定的正则表达式模式匹配到的字符串,要使用~开头,如 ~.*.test.com
安全上下文: server,location
示例:
valid_referers none blocked server_names *.teest.com tesst.* ~.test.;
if($invalid_referer) {
return http://www.test.com/test.jpg;
}
Nginx的nginx.conf配置文件
私下认可生成的公文为:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#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;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ .php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ .php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
文本结构:
... #全局块
events { #events块
...
}
http #http块
{
... #http全局块
server #server块
{
... #server全局块
location [PATTERN] #location块
{
...
}
location [PATTERN]
{
...
}
}
server
{
...
}
... #http全局块
}
其中:
1、全局块:配置影响nginx全局的下令。平常有运营nginx服务器的顾客组,nginx进度pid寄放路线,日志寄放路线,配置文件引进,允许生成worker
process数等。
2、events块:配置影响nginx服务器或与顾客的网络连接。有各种进度的最厦门接数,接纳哪一种事件驱动模型管理连接央浼,是不是同意同期接受八个网路连接,开启多个网络连接连串化等。
3、http块:能够嵌套八个server,配置代理,缓存,日志定义等好些个功能和第三方模块的安排。如文件引入,mime-type定义,日志自定义,是或不是采取sendfile传输文件,连接超时时间,单连接央求数等。
4、server块:配置虚构主机的连带参数,贰个http中得以有多个server。
5、location块:配置央浼的路由,以及各类页面包车型客车管理状态。
大规模模块及布局指令
启动nginx报错:
Starting nginx: nginx: [emerg] mkdir() "/var/tmp/nginx/client/" failed
(2: No such file or directory)
权限不足,消除办法:
cd /var/tmp/
mkdir -p /var/tmp/nginx/{client,proxy,fastcgi,uwsgi,scgi}
Nginx
Nginx是一款面向质量设计的HTTP服务器,相较于Apache、lighttpd具备占领内部存款和储蓄器少,牢固性高级优势,全部应用模块化设计,有丰裕的模块库和第三方模块库,配置灵活。
在Linux操作系统下,Nginx使用epoll事件模型,在OpenBSD或FreeBSD操作系统上应用类似于epoll的便捷事件模型kqueue。Nginx在官方测验的结果中,能够匡助陆仟0个相互连接,而在骨子里的运作中,能够协理三千0至50000个互相连接。Nginx除了是二个轻量级的异步框架的Web服务器,仍是能够用作反向代理和负载平衡器。
Nginx职业时有叁个主线程和多少个干活线程,主线程的目标是加载和阐明配置文件、维护专门的学问线程;专门的工作线程用来拍卖实际的呼吁,其数额可配备,也足以自行调解为服务器CPU数量。Nginx主配置文件:
/etc/nginx/nginx.conf,及/etc/nginx/conf.d/*.conf。Nginx由差异的模块组合,这个模块由安顿文件中内定的指令调整。
Nginx的装置配备
扩充设置配备configure
在configure命令前面加上相应布置项:
--prefix=path 定义一个目录,存放服务器上的公文 ,也正是nginx的安装目录。私下认可使用 /usr/local/nginx。
--prefix=path 定义一个索引,存放服务器上的文件 ,也正是nginx的设置目录。暗中同意使用 /usr/local/nginx。
--sbin-path=path 设置nginx的可实施文件的不二等秘书籍,默以为prefix/sbin/nginx.
--conf-path=path 设置在nginx.conf配置文件的门路。nginx允许使用差异的配备文件运转,通过命令行中的-c选项。默以为prefix/conf/nginx.conf.
--pid-path=path 设置nginx.pid文件,将积累的主进度的进程号。安装完结后,能够随时变动的公文名 , 在nginx.conf配置文件中选择 PID指令。暗中同意景况下,文件名叫prefix/logs/nginx.pid.
--error-log-path=path 设置主错误,警告,和确诊文件的称谓。安装到位后,能够随时变动的文本名 ,在nginx.conf配置文件中 使用 的error_log指令。暗许意况下,文件名称叫prefix/logs/error.log.
--http-log-path=path 设置主诉求的HTTP服务器的日记文件的名号。安装实现后,能够随时变动的公文名 ,在nginx.conf配置文件中 使用 的access_log指令。暗中认可意况下,文件名字为prefix/logs/access.log.
--user=name 设置nginx职业经过的客商。安装完结后,能够每18日变动的称谓在nginx.conf配置文件中 使用的user指令。私下认可的客商名是nobody。
--group=name 设置nginx专门的工作进程的客户组。安装到位后,能够随时变动的名称在nginx.conf配置文件中 使用的 user指令。暗许的为非特权客商。
--with-select_module --without-select_module 启用或剥夺创设一个模块来允许服务器使用select()方法。该模块将机关建设构造,假使平台不帮助的kqueue,epoll,rtsig或/dev/poll。
--with-poll_module --without-poll_module启用或剥夺塑造多个模块来允许服务器使用poll()方法。该模块将自行建设构造,尽管平台不辅助的kqueue,epoll,rtsig或/dev/poll。
--without-http_gzip_module — 不编写翻译压缩的HTTP服务器的响应模块。编写翻译并运维此模块须求zlib库。
--without-http_rewrite_module 不编写翻译重写模块。编写翻译并运转此模块须要PCRE库支持。
--without-http_proxy_module — 不编译http_proxy模块。
--with-http_ssl_module — 使用https合同模块。暗中同意情状下,该模块未有被营造。建构并运行此模块的OpenSSL库是必不可缺的。
--with-pcre=path — 设置PCRE库的源码路线。PCRE库的源码(版本4.4 - 8.30)要求从PCRE网址下载并解压。别的的行事是Nginx的./ configure和make来实现。正则表明式使用在location指令和 ngx_http_rewrite_module 模块中。
--with-pcre-jit —编译PCRE包含“just-in-time compilation”(1.1.12中, pcre_jit指令)。
--with-zlib=path —设置的zlib库的源码路线。要下载从 zlib(版本1.1.3
1.2.5)的并解压。别的的劳作是Nginx的./ configure和make完成。ngx_http_gzip_module模块要求利用zlib 。
--with-cc-opt=parameters — 设置额外的参数将被加多到CFLAGS变量。举个例子,当你在FreeBSD上采纳PCRE库时须要利用:--with-cc-opt="-I /usr/local/include。.如需求供给充实 select()支持的文件数量:--with-cc-opt="-D FD_SETSIZE=2048".
--with-ld-opt=parameters —设置附加的参数,将用来在链接时期。比方,当在FreeBSD下行使该系统的PCRE库,应钦命:--with-ld-opt="-L /usr/local/lib".
例如
./configure --sbin-path=/usr/local/nginx/nginx
--conf-path=/usr/local/nginx/nginx.conf
--pid-path=/usr/local/nginx/nginx.pid
--without-http_rewrite_module
--without-http_gzip_module
--user=nginx
--group=nginx
(这里由于本身一直不装pcre, zlib,所以选的是without)
马到成功后,能够观看目录中冒出了Makefile文件。
次第使用make和make install,安装到位。
可以用 nginx –V
来查看版本号。
Core functionality
主配置文件/etc/nginx/nginx.conf格式:
main block
event {
...
}
http {
...
server {
...
}
server {
...
listen
server_name
root
location /uri/ {
...
if CONDITION {
...
}
}
}
}
里头 main block 配置段常见的布局指令:
分类:
正常运行必备的配置
优化性能相关的配置
用于调试及定位问题相关的配置
事件驱动相关的配置
正常运行必备的配置:
1、user USERNAME [GROUP];
指定worker processes所属用户及用户组
2、pid /PATH/TO/PID_FILE;
指定存储nginx主进程进程号码的文件路径
3、include file | mask;
指明包含进来的其它配置文件片断
4、load_module file;
指明要装载的动态模块
性能优化相关的配置:
1、worker_processes number | auto;
worker进程的数量:通常应该等于小于当前主机的cpu的物理核心数
auto:当前主机物理CPU核心数
2、worker_cpu_affinity cpumask ...; 或 worker_cpu_affinity auto [cpumask];
绑定CPU核心与worker进程,默认不绑定
cpumask示例:8核
00000001:0号CPU
00000010:1号CPU
3、worker_priority number;
指定worker进程的nice值,设定worker进程优先级;[-20,20]
4、worker_rlimit_nofile number;
worker进程所能够打开的文件数量上限
调试、定位问题:
1、daemon on|off;
是否以守护进程方式运行Nignx
2、master_process on|off;
是否以master/worker模型运行nginx;默认为on
3、error_log file [level];
定义错误日志记录级别
事件驱动相关的配置:
events {
...
}
1、worker_connections number;
每个worker进程所能够打开的最大并发连接数数量
启动nginx后最大并发连接数量: worker_processes * worker_connections
2、use method;
指明并发连接请求的处理方法,不指定时nginx会自动选择最高效的处理方法
use epoll;
3、accept_mutex on | off;
处理新的连接请求的方法:on意味着由各worker轮流处理新请求,Off意味着每个新请求的到达都会通知所有的worker进程
2. Nginx的启动、停止
起步代码:
格式:nginx安装目录地址 -c nginx配置文件地址
如:/usr/sbin/nginx -c /root/zhangxiao/nginx-1.5.9/conf/nginx.conf
翻看进程:
ps -ef|grep nginx
截至进度:
kill -QUIT 进程号
ngx_http_access_module
allow|deny address|CIDR|unix:|all;
允许或拒绝访问的Ip网段,匹配顺序为从上往下匹配。
安全上下文: http,server,location,limit_except
示例:
location / {
deny 192.168.4.1;
allow 192.168.4.0/24;
deny all;
}
Nginx相当消除
本文由澳门在线威尼斯官方发布于电脑操作,转载请注明出处:澳门在线威尼斯官方Nginx安装记录小结,nginx常用
关键词: