Linux nginx 服务

                       Linux nginx 服务

Nginx服务简介:

     NGINX :是一个自由、开源、高性能、轻量级的HTTP Server 和反向代理服务器,也是一个IMAP/POP3代理服务。nginx因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。

Nginx的出现就是为了解决C10k的问题,C10k10000个并发连接。

HTTP:基于prefork模型的最大默认并发连接为256个。内部所实现的 I/O处理机制是selectselect本身支持的最大并发能力是1024个,虽然基于内核修改完以后能够突破1024个并发连接,但将会变得极其不稳定。

 

http协议:

URLshceme://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

epollLinux):libevent

KqueueBSD):

阻塞型I/O模型,

 

Nginx arch 工作模型: 

blob.png

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协议的反向代理;lnampLinux+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

fastcgiuwsgiscgi等协议相关的配置文件

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配置段常见的配置指令:

  分类:

正常运行必备的配置

优化性能相关的配置

用于调试及定位问题相关的配置

事件驱动相关的配置

 

 正常运行必备的配置:

1user

   Syntaxuser 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.

   2pid /PATH/TO/PID_FILE;

 指定存储nginx主进程进程号码的文件路径;

   3include file | mask;

 指明包含进来的其它配置文件片断;

  4load_module file;

 指明要装载的动态模块;

性能优化相关的配置:

1worker_processes number | auto;

worker进程的数量;通常应该为当前主机的cpu的物理核心数或减1; 

blob.png

2worker_cpu_affinity cpumask …; worker进程绑定cpu

    worker_cpu_affinity auto [cpumask];

CPU MASK

000000010CPU

000000101CPU

… …

   示例

4worker进程固定的绑定在4CPU上。

blob.png

blob.png

  [root@centos7 nginx]# watch -n1 'ps axo pid,comm,psr | grep nginx'

blob.png

注意:CPU是从0号开始编号的。

 

    3worker_priority number;

   指定worker进程的nice值,设定worker进程优先级;[-20,20]

blob.png

4worker_rlimit_nofile number;

   worker进程所能够打开的文件数量上限;

       worker进程所能够打开的最大文件数量上限应该大于 worker_processes * worker_connections

调试、定位问题:

1daemon on|off;

   是否以守护进程方式运行Nignx

2master_process on|off;

   是否以master/worker模型运行nginx;默认为onoff通常只为管理员设定;

3error_log file [level];

 

事件驱动相关的配置:

events {

  }

1worker_connections number;

每个worker进程所能够打开的最大并发连接数数量;

当前nginx最大并发连接数:worker_processes * worker_connections

2use method;

   指明并发连接请求的处理方法;

   默认为:use epoll;

    3accept_mutex on | off;

  处理新的连接请求的方法;on意味着由各worker轮流处理新请求,Off意味着每个新请求的到达都会通知所有的worker进程,默认为off,建议使用on

blob.png

http协议的相关配置:

http {

… …

    server {

server_name

root

location [OPERATOR] /uri/ {

      }

}

  server {

    }

  }

1server { … }

   配置一个虚拟主机;

   server {

   listen address[:PORT]|PORT;

   server_name SERVER_NAME;

   root /PATH/TO/DOCUMENT_ROOT;

}

2listen PORT|address[:port]|unix:/PATH/TO/SOCKET_FILE

  listen address[:port] [default_server] [ssl] [http2 | spdy]  [backlog=number] [rcvbuf=size] [sndbuf=size]

blob.png

3server_name name …;

指明虚拟主机的主机名称;后可跟多个由空白字符分隔的字符串;

支持*通配任意长度的任意字符;server_name *.magedu.com

    支持~起始的字符做正则表达式模式匹配;server_name ~^www\d+\.magedu\.com$

       匹配机制:

(1) 首先是字符串精确匹配;

(2) 左侧*通配符;

(3) 右侧*通配符;

(4) 正则表达式;

       注意:通配符比正则表达式要优先匹配。

blob.png

示例:

1)在nginx主配置文件中创建基于端口的虚拟机:

  http配置段中如下:

blob.png

2)在nginx主配置文件中创建基于ip的虚拟机:

blob.png

3)在nginx主配置文件中创建基于主机名的虚拟机:

blob.png

 4)在nginx服务本机设置防火墙,只允许本地网络访问80服务:

blob.png

 4tcp_nodelay on | off;nodelay不延迟)

  keepalived模式下的连接是否启用TCP_NODELAY选项;

 

   5sendfile on | off;

  是否启用sendfile功能;

定义路径相关的配置:

    6root path;

   设置web资源路径映射;用于指明用户请求的url所对应的本地文件系统上的文档所在目录路径;可用的位置:http, server, location, if in location

    7location [ = | ~ | ~* | ^~ ] uri { … }

   location @name { … }

    在一个serverlocation配置段可存在多个,用于实现从uri到文件系统的路径映射;ngnix会根据用户请求的URI来检查定义的所有location,并找出一个最佳匹配,而后应用其配置;

    =:对URI做精确匹配;例如, http://www.magedu.com/,

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

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

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

不带符号:匹配起始于此uri的所有的url

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

blob.png

8alias path;

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

 

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

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

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

blob.png

9index file …;

   默认资源;http, server, location

10error_page code … [=[response]] uri;

   Defines the URI that will be shown for the specified errors. 

blob.png

11try_files file … uri;

定义客户端请求的相关配置

 

12keepalive_timeout timeout [header_timeout];

设定保持连接的超时时长,0表示禁止长连接;默认为75s

13keepalive_requests number;

在一次长连接上所允许请求的资源的最大数量,默认为100;

14keepalive_disable none | browser …;

对哪种浏览器禁用长连接;

15send_timeout time;

向客户端发送响应报文的超时时长,此处,是指两次写操作之间的间隔时长;

16client_body_buffer_size size;

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

17client_body_temp_path path [level1 [level2 [level3]]];

设定用于存储客户端请求报文的body部分的临时存储路径及子目录结构和数量;

16进制的数字;

client_body_temp_path path  /var/tmp/client_body  1 2 2

对客户端进行限制的相关配置:

 

18limit_rate rate;

限制响应给客户端的传输速率,单位是bytes/second0表示无限制;

19limit_except method … { … }

限制对指定的请求方法之外的其它方法的使用客户端;

   

  示例:限制除get之外的所有请求方法为拒绝。

limit_except GET {

allow 192.168.1.0/32;

deny  all;

}

 

文件操作优化的配置:

20aio on | off | threads[=pool];

是否启用aio功能;

21directio size | off;

   Linux主机启用O_DIRECT标记,此处意味文件大于等于给定的大小时使用,例如directio 4m;

22open_file_cache off;

open_file_cache max=N [inactive=time];

nginx可以缓存以下三种信息:

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

(2) 打开的目录结构;

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

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

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

23open_file_cache_valid time;

缓存项有效性的检查频率;默认为60s;

24open_file_cache_min_uses number;

open_file_cache指令的inactive参数指定的时长内,至少应该被命中多少次方可被归类为活动项;

25open_file_cache_errors on | off;

是否缓存查找时发生错误的文件一类的信息;    

 

ngx_http_access_module模块:

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

26allow address | CIDR | unix: | all;

27deny address | CIDR | unix: | all;

   http, server, location, limit_except

blob.png

ngx_http_auth_basic_module模块

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

28auth_basic string | off;

29auth_basic_user_file file;

location /admin/ {

alias /webapps/app1/data/;

auth_basic "Admin Area";

auth_basic_user_file /etc/nginx/.ngxpasswd;

}

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

 示例:

blob.png

blob.png

关闭basic认证功能:

blob.png

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:处于等待客户端发出请求的空闲连接数;

30stub_status;

配置示例:

location  /basic_status {

stub_status;

}

blob.png

blob.png

ngx_http_log_module模块

he ngx_http_log_module module writes request logs in the specified format.

31log_format name string …;

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

课外作业:为nginx定义使用类似于httpdcombined格式的访问日志;

32access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];

access_log off;

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

buffer=size

    flush=time

33open_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所描述的模式进行检查,而后完成替换;

1rewrite 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终止循环;

blob.png

blob.png

blob.png

2return

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

5set $variable value;

   用户自定义变量

 

ngx_http_gzip_module

The ngx_http_gzip_module module is a filter that compresses responses using the gzipmethod. This often helps to reduce the size of transmitted data by half or even more.

1gzip on | off;

   Enables or disables gzipping of responses.

2gzip_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-Agentheader fields matching any of the specified regular expressions.

4 gzip_min_length length;

启用压缩功能的响应报文大小阈值;

5gzip_buffers number size;

   支持实现压缩功能时为其配置的缓冲区数量及每个缓存区的大小;

6gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any …;

   nginx作为代理服务器接收到从被代理服务器发送的响应报文后,在何种条件下启用压缩功能的;

off:对代理的请求不启用

no-cache, no-storeprivate:表示从被代理服务器收到的响应报文首部的Cache-Control的值为此三者中任何一个,则启用压缩功能;

7gzip_types mime-type …;

   压缩过滤器,仅对此处设定的MIME类型的内容启用压缩功能;

blob.png

ngx_http_fastcgi_module模块:

The ngx_http_fastcgi_module module allows passing requests to a FastCGI server.

1fastcgi_pass address;

   addressfastcgi server的地址; location, if in location

2fastcgi_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 servermariadb-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;

}  

4fastcgi_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

       磁盘上用于缓存数据的缓存空间上限

 

      5fastcgi_cache zone | off;

调用指定的缓存空间来缓存数据;http, server, location

  6fastcgi_cache_key string;

定义用作缓存项的key的字符串;

  7fastcgi_cache_methods GET | HEAD | POST …;

为哪些请求方法使用缓存;

  8fastcgi_cache_min_uses number;

缓存空间中的缓存项在inactive定义的非活动时间内至少要被访问到此处所指定的次数方可被认作活动项;

  9fastcgi_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;

}

}

 

     

}

   10fastcgi_keep_conn on | off;

   开启fastcgi保持连接功能;

 

ngx_http_ssl_module模块:

1 ssl on | off;

Enables the HTTPS protocol for the given virtual server.

2ssl_certificate file;

当前虚拟主机使用PEM格式的证书文件;

3ssl_certificate_key file;

    当前虚拟主机上与其证书匹配的私钥文件;

4ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];

支持ssl协议版本,默认为后三个;

5ssl_session_cache off | none | [builtin[:size]] [shared:name:size];

builtin[:size]:使用OpenSSL内建的缓存,此缓存为每worker进程私有;

[shared:name:size]:在各worker之间使用一个共享的缓存;

6ssl_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

blob.png

blob.png

   2配置/etc/nginx/conf.d/default.conf使其不管访问的uri是什么都将它重定向至https://192.168.3.5

blob.png

blob.png

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 Refererheader field.

1valid_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;

    }

 

测试防盗链网页:

blob.png

blob.png

配置fastcgi缓存

  定义fsatcgi的缓存,缓存位置为磁盘上的文件系统,由fastcgi_cache_path指定的路径来定义及 levelskeys_zoneinactive

 1)创建缓存目录并更改属主属组为nginx

blob.png

2)定义fastcgi缓存路径,fastcgi_cache_path只能定义在http配置段中:

blob.png

blob.png

3)要调用fastcgi缓存,只能在serverlocation中调用:

blob.png

blob.png

4)查看生成的缓存目录:

blob.png

实验测试:

   编译安装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/sbinPATH环境变量中:

     [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包。

   1yum 安装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会话目录,并设置nginxsession目录的属主和属组。

      mkdir /var/lib/php/session

      chown -R nginx:nginx /var/lib/php/session

   5)编辑/etc/php-fpm.d/www.conf目录设置php-fpm监听地址及用户和组为nginx

blob.png

blob.png

blob.png

blob.png

启动php-fpm

systemctl  start php-fpm.service

 

  6)配置nginx配置文档及fastcgi状态测试:

   [root@centos7 html]# vim /etc/nginx/conf.d/default.conf

blob.png

blob.png

   7)编辑一个php测试页:

   vim /usr/share/nginx/html/phpinfo.php

blob.png

  8)测试:

blob.png

9)检测fastCGI状态及ping连通性:

blob.png

试验测试,为nginx创建ssl连接:

  实验环境CAcentos6 www.magedu.com服务器为centos7

1)创建/vhosts/ssl目录和index.html测试页:

   mkdir -pv /vhosts/ssl/

2)编辑nginx配置文件:

   1)配置/etc/nginx/conf.d/ssl.conf

blob.png

blob.png

2配置/etc/nginx/conf.d/default.conf使其不管访问的uri是什么都将它重定向至https://192.168.3.5

blob.png

blob.png

3)创建私有CA

 

 1)生成私有CA的私钥文件:

blob.png

2)私有CA自签证书:

blob.png

3)创建CA数据库文件和CA数据库索引编号文件:

blob.png

  4)查看CA自签证书信息:

blob.png

5)www.magedu.com服务器端生成私钥文件:

blob.png

6)生成证书申请文件:

blob.png

7)使用scp命令把证书申请文件传递给CA

blob.png

8)www.magedu.com颁发证书。

blob.png

9)使用scp命令将www.magedu.com证书copywww.magedu.com服务器的指定目录下:

blob.png

10)查看wwwmagedu.com服务器/etc/nginx/ssl目录下的文件:

blob.png

11)查看www.magedu.com的证书:

blob.png

使用https测试访问:

blob.png

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

(0)
上一篇 2016-11-18 17:48
下一篇 2016-11-18 18:29

相关推荐

  • Linux进程及作业管理总结

    一、简介     在使用Windows操作系统中很多时候需要查看某些程序进程的运行情况,一般来说我们可以打开Windows提供的"任务管理器",然后点击"进程"栏即可查看到当前系统运行的进程列表。例如偶尔出现系统内存、CPU占用过高的时候,我们往往都会查看进程列表,并找到当前占用内存或CPU过高的进…

    Linux干货 2015-10-05
  • 常见的单机虚拟网络类型

    前言:   无论是互联网还是物联网,他们的网络模型都是可以见的,而虚拟化和云计算中的网络模型 要比这些模型要复杂的多,有些设备你是可以到也有一些设备你是看不到的,这给我们运维人员带来的技术挑战。通过学习Xen、KVM虚拟化技术,对单机虚拟网络模型有了初步的认识,以下是我对单机虚拟网络模型的认识。 一、NAT模型    …

    Linux干货 2015-09-01
  • awk基本应用

    一、何为awk awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk明显复杂的多也强大的多。如果虽然awk可以实现grep和sed的一些功能,但是效率却比grep和sed慢。故如非是在show,否则建议不要使用awk去实现grep或sed的功能。在linux中awk其实是gawk,gawk是免费的。这才是重点。 二、awk语法 man下…

    Linux干货 2020-08-18
  • 谁写了Linux

    2009年8月,Linux软件基金会发布了一份叫《Who Writes Linux and Who Supports It》(PDF)的报告。这份报告主要对Linux 2.6.x的开发进行了全方位的统计。看了以后才知道,原来Linux的开发的生产率竟是这样的惊人,而且相当的的令人振奋,所以,在第一时间转过来给大家看看。让人不得不惊叹,这不可思议的具有非凡活力…

    Linux干货 2015-04-03
  • Centos 7&6分布式lamp平台

    Centos 7&6分布式lamp平台 Centos 7&6分布式lamp平台 一、环境介绍 lamp的实现方式 本文安装方式 二、Centos 7 分布式lamp平台,module方式 安装httpd和php xcache phpMyAdmin wordpress https的phpMyAdmin 环境规划 主机2配置mariadb 主机1…

    Linux干货 2016-04-25
  • SHELL网络爬虫实例剖析

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1552472        前天简单分享了用 shell 写网络爬虫的一些见解,今天特地把代码发出来与51博…

    Linux干货 2016-08-15