Linux nginx 服务
Nginx服务简介:
NGINX :是一个自由、开源、高性能、轻量级的HTTP Server 和反向代理服务器,也是一个IMAP/POP3代理服务。nginx因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
Nginx的出现就是为了解决C10k的问题,C10k:10000个并发连接。
HTTP:基于prefork模型的最大默认并发连接为256个。内部所实现的 I/O处理机制是select而select本身支持的最大并发能力是1024个,虽然基于内核修改完以后能够突破1024个并发连接,但将会变得极其不稳定。
http协议:
URL:shceme://username:password@host:port/path;params?query#frag
Status Code:状态代码
1xx:信息;
2xx:成功类响应码,200 ok
3xx:重定向类的响应码,301永久重定向, 302临时重定向, 304 Not Modified
4xx:客户端错误,403 Forbidden请求被拒绝,404 notFound 请求的资源找不到。
5xx:服务器端错误,502 Bod Gateway
http事务:
request:
<method> <URI> <VERSION>
HEADERS
<body>
reponse:
<VERSION> <STATUS> <REASON-PHRASE>
HEADERS
<body>
Method(方法):GET/HEAD/POST, PUT/DELETE, TRACES, OPTIONS
认证方式:
基于ip认证:Require no ip 192.168.3.5 Require all granted
基于用户认证 basic
httpd MPM(多路处理模块):
prefork:进程模型,两级结构,master/worker, 每worker处理一个请求,复用型阻塞I/O模型;
worker:线程模型,三级结构,master/worker/thread,每thread处理一个请求,复用型阻塞I/O模型;
event:事件驱动的线程模型,两级结构,master/worker,每worker响应多个请求;事件驱动型I/O模型;
I/O模型:
阻塞型、非阻塞型、复用型、事件驱动型、异步
同步/异步:
关注消息通知机制;
消息通知:
同步:等待对方返回消息;
异步:被调用者通过状态、通知或回调机制通将运行状态通知给调用者;
阻塞/非阻塞:
关注调用者在等待结果返回之前所处的状态;
阻塞:blocking,调用结果返回之前,调用者被挂起;
非阻塞:nonblocking,调用结果返回之前,调用者不会被挂起;
一次IO请求,都会由两阶段组成:
第一步:等待数据,即数据从磁盘到内核内存;
第二步:复制数据,即数据内核内存到进程内存;
复用型IO调用:
http prefork select():1024个并发连接。
poll():unix
event-driven:
epoll(Linux):libevent
Kqueue(BSD):
阻塞型I/O模型,
Nginx arch 工作模型:
Nginx特点:
Event-driven 事件驱动
Asynchronous 异步
Non-blocking 非阻塞
Nginx的程序架构:
master/worker
一个master进程:
负载加载配置文件、管理worker进程、平滑升级,无需关停服务,用户无所感知。
一个或多个worker进程:
处理并响应用户请求
缓存相关的进程:
cache loader:载入缓存对象
cache manager:管理缓存对象
特性:异步、事件驱动和非阻塞
并发请求处理:通过kevent/epoll/select
文件IO:高级IO sendfile,异步,mmap
sendfile:直接将文件从内核内存发送出去,不需要经过nginx进程进行封装。
mmap:内存映射,直接将nginx进程所需数据映射到磁盘空间。
nginx高度模块块:高度模块化,但其模块早期不支持DSO(动态装卸载)机制;近期版本支持动态装载和卸载;
模块分类:
核心模块:core module
标准模块:
Standard HTTP modules:标准的http模块
Optional HTTP modules:可选http模块
Mail modules :邮件mail相关模块
Stream modules:流式协议模块
3rd party modules:第三方模块;
nginx的功用:
静态的web资源服务器;
结合FastCGI/uwSGI/SCGI等协议反代动态资源请求;
http/https协议的反向代理;lnamp:Linux+nginx+apache+mariadb+php
imap4/pop3协议的反抽代理;
tcp/udp协议的反代;
nginx的安装配置:
官方的预制包:
http://nginx.org/packages/centos/7/x86_64/RPMS/
编译安装:
~]# yum install pcre-devel openssl-devel zlib-devel
~]# useradd -r nginx
~]# ./configure –prefix=/usr/local/nginx –conf-path=/etc/nginx/nginx.conf –error-log-path=/var/log/nginx/error.log –http-log-path=/var/log/nginx/access.log –pid-path=/var/run/nginx.pid –lock-path=/var/run/nginx.lock –user=nginx –group=nginx –with-http_ssl_module –with-http_v2_module –with-http_dav_module –with-http_stub_status_module –with-threads –with-file-aio
~]# make && make install
Nginx配置文件:
配置文件的组成部分:
主配置文件:/etc/nginx/nginx.conf
include conf.d/*.conf
fastcgi, uwsgi,scgi等协议相关的配置文件
mime.types:支持的mime类型
主配置文件的配置指令:
directive value [value2 …];
注意:
(1) 指令必须以分号结尾;
(2) 支持使用配置变量;
内建变量:由Nginx模块引入,可直接引用;
自定义变量:由用户使用set命令定义;
set variable_name value;
引用变量:$variable_name
Nginx的主配置文件结构:
main block:主配置段,也即全局配置段;
event {
…
}:事件驱动相关的配置;
http {
…
}:http/https 协议相关的配置段;
mail {
…
}
stream {
…
}
http协议相关的配置结构
http {
…
…:各server的公共配置
server {
…
}:每个server用于定义一个虚拟主机;
server {
…
server_name
root
location [OPERATOR] URL {
alias
…
if CONDITION {
…
}
}
}
}
main配置段常见的配置指令:
分类:
正常运行必备的配置
优化性能相关的配置
用于调试及定位问题相关的配置
事件驱动相关的配置
正常运行必备的配置:
1、user
Syntax:user user [group];
Default: user nobody nobody;
Context: main
Defines user and group credentials used by worker processes. If group is omitted, a group whose name equals that of user is used.
2、pid /PATH/TO/PID_FILE;
指定存储nginx主进程进程号码的文件路径;
3、include file | mask;
指明包含进来的其它配置文件片断;
4、load_module file;
指明要装载的动态模块;
性能优化相关的配置:
1、worker_processes number | auto;
worker进程的数量;通常应该为当前主机的cpu的物理核心数或减1;
2、worker_cpu_affinity cpumask …; worker进程绑定cpu
worker_cpu_affinity auto [cpumask];
CPU MASK:
00000001:0号CPU
00000010:1号CPU
… …
示例 :
把4个worker进程固定的绑定在4个CPU上。
或
[root@centos7 nginx]# watch -n1 'ps axo pid,comm,psr | grep nginx'
注意:CPU是从0号开始编号的。
3、worker_priority number;
指定worker进程的nice值,设定worker进程优先级;[-20,20]
4、worker_rlimit_nofile number;
worker进程所能够打开的文件数量上限;
worker进程所能够打开的最大文件数量上限应该大于 worker_processes * worker_connections
调试、定位问题:
1、daemon on|off;
是否以守护进程方式运行Nignx;
2、master_process on|off;
是否以master/worker模型运行nginx;默认为on;off通常只为管理员设定;
3、error_log file [level];
事件驱动相关的配置:
events {
…
}
1、worker_connections number;
每个worker进程所能够打开的最大并发连接数数量;
当前nginx最大并发连接数:worker_processes * worker_connections
2、use method;
指明并发连接请求的处理方法;
默认为:use epoll;
3、accept_mutex on | off;
处理新的连接请求的方法;on意味着由各worker轮流处理新请求,Off意味着每个新请求的到达都会通知所有的worker进程,默认为off,建议使用on。
http协议的相关配置:
http {
… …
server {
…
server_name
root
location [OPERATOR] /uri/ {
…
}
}
server {
…
}
}
1、server { … }
配置一个虚拟主机;
server {
listen address[:PORT]|PORT;
server_name SERVER_NAME;
root /PATH/TO/DOCUMENT_ROOT;
}
2、listen PORT|address[:port]|unix:/PATH/TO/SOCKET_FILE
listen address[:port] [default_server] [ssl] [http2 | spdy] [backlog=number] [rcvbuf=size] [sndbuf=size]
3、server_name name …;
指明虚拟主机的主机名称;后可跟多个由空白字符分隔的字符串;
支持*通配任意长度的任意字符;server_name *.magedu.com
支持~起始的字符做正则表达式模式匹配;server_name ~^www\d+\.magedu\.com$
匹配机制:
(1) 首先是字符串精确匹配;
(2) 左侧*通配符;
(3) 右侧*通配符;
(4) 正则表达式;
注意:通配符比正则表达式要优先匹配。
示例:
1)在nginx主配置文件中创建基于端口的虚拟机:
在http配置段中如下:
2)在nginx主配置文件中创建基于ip的虚拟机:
3)在nginx主配置文件中创建基于主机名的虚拟机:
4)在nginx服务本机设置防火墙,只允许本地网络访问80服务:
4、tcp_nodelay on | off;(nodelay不延迟)
在keepalived模式下的连接是否启用TCP_NODELAY选项;
5、sendfile on | off;
是否启用sendfile功能;
定义路径相关的配置:
6、root path;
设置web资源路径映射;用于指明用户请求的url所对应的本地文件系统上的文档所在目录路径;可用的位置:http, server, location, if in location;
7、location [ = | ~ | ~* | ^~ ] uri { … }
location @name { … }
在一个server中location配置段可存在多个,用于实现从uri到文件系统的路径映射;ngnix会根据用户请求的URI来检查定义的所有location,并找出一个最佳匹配,而后应用其配置;
=:对URI做精确匹配;例如, http://www.magedu.com/,
~:对URI做正则表达式模式匹配,区分字符大小写;
~*:对URI做正则表达式模式匹配,不区分字符大小写;
^~:对URI的左半部分做匹配检查,不区分字符大小写;
不带符号:匹配起始于此uri的所有的url;
匹配优先级:=, ^~, ~/~*,不带符号;
8、alias path;
定义路径别名,文档映射的另一种机制;仅能用于location上下文;
注意:location中使用root指令和alias指令的意义不同;
(a) root,给定的路径对应于location中的/uri/左侧的/;
(b) alias,给定的路径对应于location中的/uri/右侧的/;
9、index file …;
默认资源;http, server, location;
10、error_page code … [=[response]] uri;
Defines the URI that will be shown for the specified errors.
11、try_files file … uri;
定义客户端请求的相关配置
12、keepalive_timeout timeout [header_timeout];
设定保持连接的超时时长,0表示禁止长连接;默认为75s;
13、keepalive_requests number;
在一次长连接上所允许请求的资源的最大数量,默认为100;
14、keepalive_disable none | browser …;
对哪种浏览器禁用长连接;
15、send_timeout time;
向客户端发送响应报文的超时时长,此处,是指两次写操作之间的间隔时长;
16、client_body_buffer_size size;
用于接收客户端请求报文的body部分的缓冲区大小;默认为16k;超出此大小时,其将被暂存到磁盘上的由client_body_temp_path指令所定义的位置;
17、client_body_temp_path path [level1 [level2 [level3]]];
设定用于存储客户端请求报文的body部分的临时存储路径及子目录结构和数量;
16进制的数字;
client_body_temp_path path /var/tmp/client_body 1 2 2
对客户端进行限制的相关配置:
18、limit_rate rate;
限制响应给客户端的传输速率,单位是bytes/second,0表示无限制;
19、limit_except method … { … }
限制对指定的请求方法之外的其它方法的使用客户端;
示例:限制除get之外的所有请求方法为拒绝。
limit_except GET {
allow 192.168.1.0/32;
deny all;
}
文件操作优化的配置:
20、aio on | off | threads[=pool];
是否启用aio功能;
21、directio size | off;
在Linux主机启用O_DIRECT标记,此处意味文件大于等于给定的大小时使用,例如directio 4m;
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_users指令所指定的次数的缓存项即为非活动项;
23、open_file_cache_valid time;
缓存项有效性的检查频率;默认为60s;
24、open_file_cache_min_uses number;
在open_file_cache指令的inactive参数指定的时长内,至少应该被命中多少次方可被归类为活动项;
25、open_file_cache_errors on | off;
是否缓存查找时发生错误的文件一类的信息;
ngx_http_access_module模块:
实现基于ip的访问控制功能
26、allow address | CIDR | unix: | all;
27、deny address | CIDR | unix: | all;
http, server, location, limit_except
ngx_http_auth_basic_module模块
实现基于用户的访问控制,使用basic机制进行用户认证;
28、auth_basic string | off;
29、auth_basic_user_file file;
location /admin/ {
alias /webapps/app1/data/;
auth_basic "Admin Area";
auth_basic_user_file /etc/nginx/.ngxpasswd;
}
注意:htpasswd命令由httpd-tools所提供;
示例:
关闭basic认证功能:
ngx_http_stub_status_module模块
用于输出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:处于等待客户端发出请求的空闲连接数;
30、stub_status;
配置示例:
location /basic_status {
stub_status;
}
ngx_http_log_module模块
he ngx_http_log_module module writes request logs in the specified format.
31、log_format name string …;
string可以使用nginx核心模块及其它模块内嵌的变量;
课外作业:为nginx定义使用类似于httpd的combined格式的访问日志;
32、access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
access_log off;
访问日志文件路径,格式及相关的缓冲的配置;
buffer=size
flush=time
33、open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
open_log_file_cache off;
缓存各日志文件相关的元数据信息;
max:缓存的最大文件描述符数量;
min_users:在inactive指定的时长内访问大于等于此值方可被当作活动项;
inactive:非活动时长;
valid:验正缓存中各缓存项是否为活动项的时间间隔;
ngx_http_rewrite_module模块:
The ngx_http_rewrite_module module is used to change request URI using PCRE regular expressions, return redirects, and conditionally select configurations.
将用户请求的URI基于regex所描述的模式进行检查,而后完成替换;
1、rewrite regex replacement [flag]
将用户请求的URI基于regex所描述的模式进行检查,匹配到时将其替换为replacement指定的新的URI;
注意:如果在同一级配置块中存在多个rewrite规则,那么会自上而下逐个检查;被某条件规则替换完成后,会重新一轮的替换检查,因此,隐含有循环机制;[flag]所表示的标志位用于控制此循环机制;
如果replacement是以http://或https://开头,则替换结果会直接以重定向返回给客户端;
301:永久重定向;
[flag]:
last:重写完成后停止对当前URI在当前location中后续的其它重写操作,而后对新的URI启动新一轮重写检查;提前重启新一轮循环;
break:重写完成后停止对当前URI在当前location中后续的其它重写操作,而后直接跳转至重写规则配置块之后的其它配置;结束循环;
redirect:重写完成后以临时重定向方式直接返回重写后生成的新URI给客户端,由客户端重新发起请求;不能以http://或https://开头;
permanent:重写完成后以永久重定向方式直接返回重写后生成的新URI给客户端,由客户端重新发起请求;
示例: break终止循环;
2、return
return code [text];
return code URL;
return URL;
Stops processing and returns the specified code to a client.
3、 rewrite_log on | off;
是否开启重写日志;
4、 if (condition) { … }
引入一个新的配置上下文 ;条件满足时,执行配置块中的配置指令;server, location;
condition(条件):
比较操作符:
==
!=
~:模式匹配,区分字符大小写;
~*:模式匹配,不区分字符大小写;
!~:模式不匹配,区分字符大小写;
!~*:模式不匹配,不区分字符大小写;
文件及目录存在性判断:
-e, !-e
-f, !-f
-d, !-d
-x, !-x
5、set $variable value;
用户自定义变量 ;
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.
1、gzip on | off;
Enables or disables gzipping of responses.
2、gzip_comp_level level;
Sets a gzip compression level of a response. Acceptable values are in the range from 1 to 9.
3、 gzip_disable regex …;
Disables gzipping of responses for requests with “User-Agent” header fields matching any of the specified regular expressions.
4、 gzip_min_length length;
启用压缩功能的响应报文大小阈值;
5、gzip_buffers number size;
支持实现压缩功能时为其配置的缓冲区数量及每个缓存区的大小;
6、gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any …;
nginx作为代理服务器接收到从被代理服务器发送的响应报文后,在何种条件下启用压缩功能的;
off:对代理的请求不启用
no-cache, no-store,private:表示从被代理服务器收到的响应报文首部的Cache-Control的值为此三者中任何一个,则启用压缩功能;
7、gzip_types mime-type …;
压缩过滤器,仅对此处设定的MIME类型的内容启用压缩功能;
ngx_http_fastcgi_module模块:
The ngx_http_fastcgi_module module allows passing requests to a FastCGI server.
1、fastcgi_pass address;
address为fastcgi server的地址; location, if in location;
2、fastcgi_index name;
fastcgi默认的主页资源;
3、fastcgi_param parameter value [if_not_empty];
从nginx下传递一个参数给php-fpm
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script _name;
Sets a parameter that should be passed to the FastCGI server. The value can contain text,
variables, and their combination.
配置示例1:
前提:配置好fpm server和mariadb-server服务;
location ~* \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
配置示例2:通过/pm_status和/ping来获取fpm server状态信息;
location ~* ^/(pm_status|ping)/?$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
}
4、fastcgi_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];
定义fastcgi的缓存;缓存位置为磁盘上的文件系统,由path所指定路径来定义;
levels=levels:缓存目录的层级数量,以及每一级的目录数量;levels=ONE:TWO:THREE
leves=1:2:2
keys_zone=name:size
k/v映射的内存空间的名称及大小
inactive=time
非活动时长
max_size=size
磁盘上用于缓存数据的缓存空间上限
5、fastcgi_cache zone | off;
调用指定的缓存空间来缓存数据;http, server, location
6、fastcgi_cache_key string;
定义用作缓存项的key的字符串;
7、fastcgi_cache_methods GET | HEAD | POST …;
为哪些请求方法使用缓存;
8、fastcgi_cache_min_uses number;
缓存空间中的缓存项在inactive定义的非活动时间内至少要被访问到此处所指定的次数方可被认作活动项;
9、fastcgi_cache_valid [code …] time;
不同的响应码各自的缓存时长;
示例:
http {
…
fastcgi_cache_path /var/cache/nginx/fastcgi_cache levels=1:2:1 keys_zone=fcgi:20m inactive=120s;
…
server {
…
location ~* \.php$ {
…
fastcgi_cache fcgi;
fastcgi_cache_key $request_uri;
fastcgi_cache_valid 200 302 10m;
fastcgi_cache_valid 301 1h;
fastcgi_cache_valid any 1m;
…
}
…
}
…
}
10、fastcgi_keep_conn on | off;
开启fastcgi保持连接功能;
ngx_http_ssl_module模块:
1、 ssl on | off;
Enables the HTTPS protocol for the given virtual server.
2、ssl_certificate file;
当前虚拟主机使用PEM格式的证书文件;
3、ssl_certificate_key file;
当前虚拟主机上与其证书匹配的私钥文件;
4、ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];
支持ssl协议版本,默认为后三个;
5、ssl_session_cache off | none | [builtin[:size]] [shared:name:size];
builtin[:size]:使用OpenSSL内建的缓存,此缓存为每worker进程私有;
[shared:name:size]:在各worker之间使用一个共享的缓存;
6、ssl_session_timeout time;
客户端一侧的连接可以复用ssl session cache中缓存 的ssl参数的有效时长;
配置示例:
server {
listen 443 ssl;
server_name www.magedu.com;
root /vhosts/ssl/htdocs;
ssl on;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
ssl_session_cache shared:sslcache:20m;
}
1)编辑nginx配置文件:
(1)配置/etc/nginx/conf.d/ssl.conf
(2)配置/etc/nginx/conf.d/default.conf使其不管访问的uri是什么都将它重定向至https://192.168.3.5
ngx_http_referer_module模块: referer(引用)
防止盗链
The ngx_http_referer_module module is used to block access to a site for requests with invalid values in the “Referer” header field.
1、valid_referers none | blocked | server_names | string …;
定义referer首部的合法可用值;
none:请求报文首部没有referer首部;
blocked:请求报文的referer首部没有值;
server_names:参数,其可以有值作为主机名或主机名模式;
arbitrary_string:直接字符串,但可使用*作通配符;
regular expression:被指定的正则表达式模式匹配到的字符串;要使用~打头,例如 ~.*\.magedu\.com;
配置示例:
valid_referers none block server_names *.magedu.com *.mageedu.com magedu.* mageedu.* ~\.magedu\.;
if($invalid_referer) {
return 403;
}
测试防盗链网页:
配置fastcgi缓存
定义fsatcgi的缓存,缓存位置为磁盘上的文件系统,由fastcgi_cache_path指定的路径来定义及 levels、keys_zone、inactive:
1)创建缓存目录并更改属主属组为nginx:
2)定义fastcgi缓存路径,fastcgi_cache_path只能定义在http配置段中:
3)要调用fastcgi缓存,只能在server或location中调用:
4)查看生成的缓存目录:
实验测试:
编译安装nginx服务:
1)安装编译时的开发环境包组:
yum -y groupinstall "Development Tools" "Server Platform Development"
2)安装所需软件包依赖关系:支持正则表达式、ssl、和数据传输时压缩传送
yum -y install pcre-devel openssl-devel zlib-devel
3)创建添加一个系统用户:
[root@centos7 ~]# useradd -r nginx
4)解压nginx-1.10.0.tar.gz:
~]# tar xf nginx-1.10.0.tar.gz
~]# cd nginx-1.10.0/
5)配置nginx所需的编译路径及模块:
[root@centos7 nginx-1.10.0]# ./configure –prefix=/usr/local/nginx –conf-path=/etc/nginx/nginx.conf –error-log-path=/var/log/nginx/error.log –http-log-path=/var/log/nginx/access.log –pid-path=/var/run/nginx.pid –lock-path=/var/run/nginx.lock –user=nginx –group=nginx –with-http_ssl_module –with-http_v2_module –with-http_dav_module –with-http_stub_status_module –with-threads –with-file-aio
6)编译和安装nginx服务:
[root@centos7 nginx-1.10.0]# make -j 4 && make install
7)导入/usr/local/nginx/sbin到PATH环境变量中:
[root@centos7 nginx-1.10.0]# echo "export PATH=/usr/local/nginx/sbin:$PATH" > /etc/profile.d/nginx.sh
[root@centos7 nginx-1.10.0]# . /etc/profile.d/nginx.sh
8)启动nginx:如果你已经启动httpd服务,nginx是无法启动的,会报错。
直接写nginx回车即可;
[root@centos7 nginx]# nginx
实验测试:
yum安装nginx,安装新版本的nginx-1.10.0-1.el7.ngx.x86_64.rpm,需去nginx官方站点下载此rpm包。
1)yum 安装nginx:
~]# yum -y install ./nginx-1.10.0-1.el7.ngx.x86_64.rpm
2)启动nginx服务:
systemctl start nginx.service
3)安装mariadb数据库和php-fpm
yum -y install mariadb-server php-fpm php-mysql php-mcrypt php-gd php-mstring
4)为php-fpm创建session会话目录,并设置nginx为session目录的属主和属组。
mkdir /var/lib/php/session
chown -R nginx:nginx /var/lib/php/session
5)编辑/etc/php-fpm.d/www.conf目录设置php-fpm监听地址及用户和组为nginx。
启动php-fpm:
systemctl start php-fpm.service
6)配置nginx配置文档及fastcgi状态测试:
[root@centos7 html]# vim /etc/nginx/conf.d/default.conf
7)编辑一个php测试页:
vim /usr/share/nginx/html/phpinfo.php
8)测试:
9)检测fastCGI状态及ping连通性:
试验测试,为nginx创建ssl连接:
实验环境CA为centos6 www.magedu.com服务器为centos7:
1)创建/vhosts/ssl目录和index.html测试页:
mkdir -pv /vhosts/ssl/
2)编辑nginx配置文件:
(1)配置/etc/nginx/conf.d/ssl.conf
(2)配置/etc/nginx/conf.d/default.conf使其不管访问的uri是什么都将它重定向至https://192.168.3.5
3)创建私有CA:
(1)生成私有CA的私钥文件:
(2)私有CA自签证书:
(3)创建CA数据库文件和CA数据库索引编号文件:
(4)查看CA自签证书信息:
5)在www.magedu.com服务器端生成私钥文件:
6)生成证书申请文件:
7)使用scp命令把证书申请文件传递给CA:
8)给www.magedu.com颁发证书。
9)使用scp命令将www.magedu.com证书copy到www.magedu.com服务器的指定目录下:
10)查看wwwmagedu.com服务器/etc/nginx/ssl目录下的文件:
11)查看www.magedu.com的证书:
使用https测试访问:
原创文章,作者:zhengyibo,如若转载,请注明出处:http://www.178linux.com/59604