CentOS 6.8 Nginx 配置文件详解

Nginx 配置文件:/etc/nginx/nginx.conf

#定义 nginx 运行的用户和用户组
user  www www;
 
#设置 nginx 进程数,一般设置为 cpu 核心数,auto 为自动检测
worker_processes  auto;
 
#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
error_log  logs/error.log;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;
 
#守护进程 pid 文件
pid        logs/nginx.pid;
 
#events 模块中包含 nginx 中所有处理连接的设置
events {
    #单个进程最大连接数(最大连接数=连接数*进程数)
    worker_connections  2048;
    #设置 nginx 收到一个新链接通知后接受尽可能多的链接
    multi_accept on;
    #设置用于复用客户端线程的轮训方法
    use epoll;
}
 
#http 模块控制着 nginx http 处理的所有核心特性
http {
    #文件扩展名与文件类型映射表
    include       mime.types;
 
    #默认文件类型
    default_type  application/octet-stream;
 
    #打开或关闭错误页面中的 nginx 版本号 deng
    server_tokens on;
 
    #设置 nginx 是否存储访问日志,关闭这个可以让读取磁盘 IO 操作更快
    access_log on;
 
    #服务器名字的 hash 表大小
    #保存服务器名字的 hash 表是由指令 server_names_hash_max_size 和 server_names_hash_bucket_size
    #所控制的。参数 hash bucket size 总是等于 hash 表的大小,并且是一路处理器缓存大小的倍数。
    #在减少了在内存中的存取次数后,使在处理器中加速查找 hash 表键值成为可能。
    #如果 hash bucket size 等于一路处理器缓存的大小,那么在查找键的时候,
    #最坏的情况下在内存中查找的次数为 2。第一次是确定存储单元的地址,第二次是在存储单元中查找键 值。
    #因此,如果 Nginx 给出需要增大 hash max size 或 hash bucket size 的提示,
    #那么首要的是增大前一个参数的大小.
    server_names_hash_bucket_size 128;
 
    #客户请求头缓冲大小。nginx 默认会用 client_header_buffer_size 这个 buffer 来读取 header 值,
    #如果 header 过大,它会使用 large_client_header_buffers 来读取。
    large_client_header_buffers 4 64k;
 
    #设定通过 nginx 上传文件的大小
    client_max_body_size 8M;
 
    #缓冲区代理缓冲用户端请求的最大字节数,
    #如果把它设置为比较大的数值,例如 256k,那么,无论使用 firefox 还是 IE 浏览器,
    #来提交任意小于 256k 的图片,都很正常。如果注释该指令,使用默认的 client_body_buffer_size 设置,
    #也就是操作系统页面大小的两倍,8k 或者 16k,问题就出现了。
    
    client_body_buffer_size 128k;
 
    #开启高效文件传输模式,优化磁盘 IO 设置
    sendfile        on;
 
    #设置 nginx 在一个数据包里发送所有头文件,而不是一个接一个的发送
    tcp_nopush     on;
 
    # HTTP1.1 支持持久连接 alive
    # 降低每个连接的 alive 时间可在一定程度上提高可响应连接数量,所以一般可适当降低此值
    keepalive_timeout  60;
 
    #设置代理服务器(nginx)保存用户头信息的缓冲区大小
    #设置从被代理服务器读取的第一部分应答的缓冲区大小,通常情况下这部分应答中包含一个小的应答头,
    #默认情况下这个值的大小为指令 proxy_buffers 中指定的一个缓冲区的大小,不过可以将其设置为更小
    proxy_buffer_size 4k;
 
    #proxy_buffers 缓冲区,网页平均在 32k 以下的设置
    #设置用于读取应答(来自被代理服务器)的缓冲区数目和大小,默认情况也为分页大小,
    #根据操作系统的不同可能是 4k 或者 8k
    proxy_buffers 4 32k;
 
    #高负荷下缓冲大小(proxy_buffers*2)
    proxy_busy_buffers_size 64k;
 
    #设置在写入 proxy_temp_path 时数据的大小,预防一个工作进程在传递文件时阻塞太长
    #设定缓存文件夹大小,大于这个值,将从 upstream 服务器传
    proxy_temp_file_write_size 64k;
 
    gzip  on;
    #加 vary 给代理服务器使用,针对有的浏览器支持压缩,有个不支持,
    #根据客户端的 HTTP 头来判断是否需要压缩
    #gzip_vary on;
 
    # 过短的内容压缩效果不佳,压缩过程还会浪费系统资源
    gzip_min_length 1000;
 
    #允许或禁止压缩基于请求和相应的响应流,any 代表压缩所有请求
    gzip_proxied any;
 
    #==设置数据压缩等级,1-9 之间,9 最慢压缩比最大
    gzip_comp_level 9;
 
    #设置需要压缩的数据格式
    gzip_types text/plain text/css text/xml text/javascript application/json 
    application/x-javascript application/xml application/xml+rss;
 
    # 静态文件缓存
    # 最大缓存数量,文件未使用存活期
    open_file_cache max=65535 inactive=20s;
    # 验证缓存有效期时间间隔
    open_file_cache_valid 30s;
    # 有效期内文件最少使用次数
    open_file_cache_min_uses 3;
 
    #虚拟主机配置
    server {
        listen       80;
 
        #多域名用空格隔开
        server_name  localhost zixuephp.net www.zixuephp.net;
 
        #设置默认访问首页
        index index.php index.html;
 
        #默认编码
        charset utf-8;
 
 
        #定义本虚拟主机的访问日志
        access_log  logs/access.log;
 
        #错误也设置
        error_page   500 502 503 504  /404.html;
        location = /404.html {
            root   html;
        }
 
        #图片缓存
        location ~ .*.(gif|jpg|jpeg|png|bmp|swf|js|css)$ {
            expires       7d;
        }
 
 
        #网站伪静态
        location / {
            rewrite "^/index.html$" /index.php last;
            rewrite "^/iphp.html$" /iphp.php last;
            rewrite "^/login.html$" /login.php last;
            rewrite "^/post.html$" /post.php last;
            rewrite "^/article.html$" /article.php last;
            rewrite "^/article-([0-9]+).html$" /article.php?aid=$1 last;
            rewrite "^/iphp-([0-9]+)-([0-9]+).html$" /iphp.php?mid=$1&cid=$2 last;
            rewrite "^/iphp-([0-9]+)-page([0-9]+).html$" /iphp.php?mid=$1&page=$2;
            rewrite "^/iphp-c([0-9]+)-page([0-9]+).html$" /iphp.php?cid=$1&page=$2;
            rewrite "^/search.html$" /search.php;
        }
 
 
        #nginx 解析 php 脚本
        location ~ .php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
            include        fastcgi_params;
            index          index.php index.html;
 
        }
    }
 
}

CentOS Nginx 防盗链配置

使用 nginx location 进行图片匹配,匹配图片后进行来源 Referer 判断,若非本站即返回 403 或图片。
Nginx 配置文件:/etc/nginx/conf.d/
WWW 默认路径:/usr/share/nginx/html/

location ~ .*\.(gif|jpg|jpeg|png|bmp)$ {
      expires       7d;
    
      valid_referers none blocked server_names *.baidu.com *.google.com *.360.cn *.bing.com;
       #valid_referers server_names *.baidu.com *.google.com; #Referer 不能为空
      if ($invalid_referer) {
          rewrite ^/ https://static.hexingxing.cn/v2/element/webp/static_vfx.jpg;
          #return 403;
       }
}

valid_referers none blocked #设置来源 Referer 来自本站或 Referer 为空;
if ($invalid_referer){} #检查是否存在指定的 Referer 白名单,不存在就返回指定图片或 403;
重启 nginx 生效。

Nginx 启用 Gzip,使网站轻量加速响应

配置文件:

[root@localhost ~]# vi /etc/nginx/nginx.conf

 

配置位置:

......

http {
......

# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;

gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
#gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary off;
gzip_disable "MSIE [1-6]\.";

}

 

配置文档:

gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
#gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary off;
gzip_disable "MSIE [1-6]\.";

 

重载配置:

[root@localhost ~]# service nginx reload

 

查询生效

curl -I -H "Accept-Encoding: gzip, deflate" "https://yourlocalhost"
HTTP/1.1 200 OK
Server: nginx
Date: ......
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
......
Content-Encoding: gzip

 

查询其他文件:

curl -I -H "Accept-Encoding: gzip, deflate" "https://yourlocalhost/img.jpg"
curl -I -H "Accept-Encoding: gzip, deflate" "https://yourlocalhost/javasc.js"
curl -I -H "Accept-Encoding: gzip, deflate" "https://yourlocalhost/style.css"

 

通过外部站点查询生效:
http://tool.chinaz.com/Gzips/?q=yourlocalhost

 

配置指令详细注释:

+ gzip on|off
– # 默认值: gzip off
– # 开启或者关闭 gzip 模块

+ gzip_static on|off
– # nginx 对于静态文件的处理模块
– # 该模块可以读取预先压缩的 gz 文件,这样可以减少每次请求进行 gzip 压缩的 CPU 资源消耗。该模块启用后,nginx 首先检查是否存在请求静态文件的 gz 结尾的文件,如果有则直接返回该 gz 文件内容。为了要兼容不支持 gzip 的浏览器,启用 gzip_static 模块就必须同时保留原始静态文件和 gz 文件。这样的话,在有大量静态文件的情况下,将会大大增加磁盘空间。我们可以利用 nginx 的反向代理功能实现只保留 gz 文件。
– # 可以 google”nginx gzip_static” 了解更多

+ gzip_comp_level 4
– # 默认值:1(建议选择为 4)
– # gzip 压缩比/压缩级别,压缩级别 1-9,级别越高压缩率越大,当然压缩时间也就越长(传输快但比较消耗 cpu)。

+ gzip_buffers 4 16k
– # 默认值: gzip_buffers 4 4k/8k
– # 设置系统获取几个单位的缓存用于存储 gzip 的压缩结果数据流。 例如 4 4k 代表以 4k 为单位,按照原始数据大小以 4k 为单位的 4 倍申请内存。 4 8k 代表以 8k 为单位,按照原始数据大小以 8k 为单位的 4 倍申请内存。
– # 如果没有设置,默认值是申请跟原始数据相同大小的内存空间去存储 gzip 压缩结果。

+ gzip_types mime-type [mime-type …]
– # 默认值: gzip_types text/html (默认不对 js/css 文件进行压缩)
– # 压缩类型,匹配 MIME 类型进行压缩
– # 不能用通配符 text/*
– # (无论是否指定)text/html 默认已经压缩
– # 设置哪压缩种文本文件可参考 conf/mime.types

+ gzip_min_length  1k
– # 默认值: 0 ,不管页面多大都压缩
– # 设置允许压缩的页面最小字节数,页面字节数从 header 头中的 Content-Length 中进行获取。
– # 建议设置成大于 1k 的字节数,小于 1k 可能会越压越大。 即: gzip_min_length 1024

+ gzip_http_version 1.0|1.1
– # 默认值: gzip_http_version 1.1(就是说对 HTTP/1.1 协议的请求才会进行 gzip 压缩)
– # 识别 http 的协议版本。由于早期的一些浏览器或者 http 客户端,可能不支持 gzip 自解压,用户就会看到乱码,所以做一些判断还是有必要的。
– # 注:99.99% 的浏览器基本上都支持 gzip 解压了,所以可以不用设这个值, 保持系统默认即可。
– # 假设我们使用的是默认值 1.1,如果我们使用了 proxy_pass 进行反向代理,那么 nginx 和后端的 upstream server 之间是用 HTTP/1.0 协议通信的,如果我们使用 nginx 通过反向代理做 Cache Server,而且前端的 nginx 没有开启 gzip,同时,我们后端的 nginx 上没有设置 gzip_http_version 为 1.0,那么 Cache 的 url 将不会进行 gzip 压缩

+ gzip_proxied [off|expired|no-cache|no-store|private|no_last_modified|no_etag|auth|any] …
– # 默认值:off
– # Nginx 作为反向代理的时候启用,开启或者关闭后端服务器返回的结果,匹配的前提是后端服务器必须要返回包含”Via” 的 header 头。
– off 关闭所有的代理结果数据的压缩
– expired 启用压缩,如果 header 头中包含 “Expires” 头信息
– no-cache 启用压缩,如果 header 头中包含 “Cache-Control:no-cache” 头信息
– no-store 启用压缩,如果 header 头中包含 “Cache-Control:no-store” 头信息
– private 启用压缩,如果 header 头中包含 “Cache-Control:private” 头信息
– no_last_modified 启用压缩, 如果 header 头中不包含 “Last-Modified” 头信息
– no_etag 启用压缩 , 如果 header 头中不包含 “ETag” 头信息
– auth 启用压缩 , 如果 header 头中包含 “Authorization” 头信息
– any 无条件启用压缩

+ gzip_vary on
– # 和 http 头有关系,加个 vary 头,给代理服务器用的,有的浏览器支持压缩,有的不支持,所以避免浪费不支持的也压缩,所以根据客户端的 HTTP 头来判断,是否需要压缩

+ gzip_disable “MSIE [1-6].”
– # 禁用 IE6 的 gzip 压缩,又是因为杯具的 IE6。当然,IE6 目前依然广泛的存在,所以这里你也可以设置为 “MSIE [1-5].”
– # IE6 的某些版本对 gzip 的压缩支持很不好,会造成页面的假死,今天产品的同学就测试出了这个问题
– 后来调试后,发现是对 img 进行 gzip 后造成 IE6 的假死,把对 img 的 gzip 压缩去掉后就正常了
– 为了确保其它的 IE6 版本不出问题,所以建议加上 gzip_disable 的设置

CentOS 6.8 chkconfig、service、ps、grep、kill 命令

[root@hexingxing ~]#  chkconfig --list ## 查看所有开机启用服务项
auditd         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
blk-availability 0: 关闭 1: 启用 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
crond           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
htcacheclean   0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
httpd           0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
ip6tables       0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
iptables       0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
iscsi           0: 关闭 1: 关闭 2: 关闭 3: 启用 4: 启用 5: 启用 6: 关闭
iscsid         0: 关闭 1: 关闭 2: 关闭 3: 启用 4: 启用 5: 启用 6: 关闭
lvm2-monitor   0: 关闭 1: 启用 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
mdmonitor       0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
multipathd     0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
netconsole     0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
netfs           0: 关闭 1: 关闭 2: 关闭 3: 启用 4: 启用 5: 启用 6: 关闭
network         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
nginx           0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
ntpd           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
ntpdate         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
nyGuardd       0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
nyTerminald     0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
postfix         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
rdisc           0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
restorecond     0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
rsyslog         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
saslauthd       0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
sshd           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
udev-post       0: 关闭 1: 启用 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
vsftpd         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
[root@hexingxing ~]#  service nginx start ## 开启 nginx 服务
正在启动 nginx:                                           [确定]
[root@hexingxing ~]#  chkconfig nginx on ## 设置 nginx 服务开机启用
[root@hexingxing ~]#  chkconfig --list ## 查看所有开机服务项,此时 nginx 已经开机开启服务
auditd         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
blk-availability 0: 关闭 1: 启用 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
crond           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
htcacheclean   0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
httpd           0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
ip6tables       0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
iptables       0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
iscsi           0: 关闭 1: 关闭 2: 关闭 3: 启用 4: 启用 5: 启用 6: 关闭
iscsid         0: 关闭 1: 关闭 2: 关闭 3: 启用 4: 启用 5: 启用 6: 关闭
lvm2-monitor   0: 关闭 1: 启用 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
mdmonitor       0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
multipathd     0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
netconsole     0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
netfs           0: 关闭 1: 关闭 2: 关闭 3: 启用 4: 启用 5: 启用 6: 关闭
network         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
nginx           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
ntpd           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
ntpdate         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
nyGuardd       0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
nyTerminald     0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
postfix         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
rdisc           0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
restorecond     0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
rsyslog         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
saslauthd       0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
sshd           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
udev-post       0: 关闭 1: 启用 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
vsftpd         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
[root@hexingxing ~]#  chkconfig httpd on ## 设置 apache 服务开机启用
[root@hexingxing ~]#  chkconfig --list ## 查看所有开机服务项,此时 apache 已经开机开启服务
auditd         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
blk-availability 0: 关闭 1: 启用 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
crond           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
htcacheclean   0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
httpd           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
ip6tables       0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
iptables       0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
iscsi           0: 关闭 1: 关闭 2: 关闭 3: 启用 4: 启用 5: 启用 6: 关闭
iscsid         0: 关闭 1: 关闭 2: 关闭 3: 启用 4: 启用 5: 启用 6: 关闭
lvm2-monitor   0: 关闭 1: 启用 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
mdmonitor       0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
multipathd     0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
netconsole     0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
netfs           0: 关闭 1: 关闭 2: 关闭 3: 启用 4: 启用 5: 启用 6: 关闭
network         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
nginx           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
ntpd           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
ntpdate         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
nyGuardd       0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
nyTerminald     0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
postfix         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
rdisc           0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
restorecond     0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
rsyslog         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
saslauthd       0: 关闭 1: 关闭 2: 关闭 3: 关闭 4: 关闭 5: 关闭 6: 关闭
sshd           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
udev-post       0: 关闭 1: 启用 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
vsftpd         0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
[root@hexingxing ~]#  shutdown -r now  ##重启系统
[root@hexingxing ~]#  service nginx start ## 开启 nginx 服务,开启失败,由于现在 apache 和 nginx 已经全部是开机启用并都使用 80 端口,所以有冲突,要启用 nginx 需要停止 apache 服务
正在启动 nginx:nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
[失败]
[root@hexingxing ~]#  service httpd stop ## 停止 apache 服务
停止 httpd:                                               [确定]
[root@hexingxing ~]#  service nginx start ## 开启 nginx 服务,此时可以正常开启 nginx 服务
正在启动 nginx:                                           [确定]
[root@hexingxing ~]#  service httpd status ## 查看 apache 服务状态,已停止
httpd 已停止
[root@hexingxing ~]#  service nginx status ## 查看 nginx 服务状态,正在运行
nginx (pid  2978) 正在运行...
[root@hexingxing ~]#  service nginx stop ## 停止 nginx 服务
停止 nginx:                                               [确定]
[root@hexingxing ~]#  service httpd start ## 开启 apache 服务
正在启动 httpd:                                               [确定]
[root@hexingxing ~]#  ps -ef ## 查看正在运行的所有进程
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 19:16 ?        00:00:01 /sbin/init
root         2     0  0 19:16 ?        00:00:00 [kthreadd]
root         3     2  0 19:16 ?        00:00:00 [migration/0]
root         4     2  0 19:16 ?        00:00:00 [ksoftirqd/0]
root         5     2  0 19:16 ?        00:00:00 [stopper/0]
root         6     2  0 19:16 ?        00:00:00 [watchdog/0]
root         7     2  0 19:16 ?        00:00:00 [migration/1]
root         8     2  0 19:16 ?        00:00:00 [stopper/1]
root         9     2  0 19:16 ?        00:00:00 [ksoftirqd/1]
root        10     2  0 19:16 ?        00:00:00 [watchdog/1]
root        11     2  0 19:16 ?        00:00:02 [events/0]
root        12     2  0 19:16 ?        00:00:02 [events/1]
root        13     2  0 19:16 ?        00:00:00 [events/0]
root        14     2  0 19:16 ?        00:00:00 [events/1]
root        15     2  0 19:16 ?        00:00:00 [events_long/0]
root        16     2  0 19:16 ?        00:00:00 [events_long/1]
root        17     2  0 19:16 ?        00:00:00 [events_power_ef]
root        18     2  0 19:16 ?        00:00:00 [events_power_ef]
root        19     2  0 19:16 ?        00:00:00 [cgroup]
root        20     2  0 19:16 ?        00:00:00 [khelper]
root        21     2  0 19:16 ?        00:00:00 [netns]
root        22     2  0 19:16 ?        00:00:00 [async/mgr]
root        23     2  0 19:16 ?        00:00:00 [pm]
root        24     2  0 19:16 ?        00:00:00 [sync_supers]
root        25     2  0 19:16 ?        00:00:00 [bdi-default]
root        26     2  0 19:16 ?        00:00:00 [kintegrityd/0]
root        27     2  0 19:16 ?        00:00:00 [kintegrityd/1]
root        28     2  0 19:16 ?        00:00:00 [kblockd/0]
root        29     2  0 19:16 ?        00:00:00 [kblockd/1]
root        30     2  0 19:16 ?        00:00:00 [kacpid]
root        31     2  0 19:16 ?        00:00:00 [kacpi_notify]
root        32     2  0 19:16 ?        00:00:00 [kacpi_hotplug]
root        33     2  0 19:16 ?        00:00:00 [ata_aux]
root        34     2  0 19:16 ?        00:00:00 [ata_sff/0]
root        35     2  0 19:16 ?        00:00:00 [ata_sff/1]
root        36     2  0 19:16 ?        00:00:00 [ksuspend_usbd]
root        37     2  0 19:16 ?        00:00:00 [khubd]
root        38     2  0 19:16 ?        00:00:00 [kseriod]
root        39     2  0 19:16 ?        00:00:00 [md/0]
root        40     2  0 19:16 ?        00:00:00 [md/1]
root        41     2  0 19:16 ?        00:00:00 [md_misc/0]
root        42     2  0 19:16 ?        00:00:00 [md_misc/1]
root        43     2  0 19:16 ?        00:00:00 [linkwatch]
root        46     2  0 19:16 ?        00:00:00 [khungtaskd]
root        47     2  0 19:16 ?        00:00:00 [kswapd0]
root        48     2  0 19:16 ?        00:00:00 [ksmd]
root        49     2  0 19:16 ?        00:00:00 [khugepaged]
root        50     2  0 19:16 ?        00:00:00 [aio/0]
root        51     2  0 19:16 ?        00:00:00 [aio/1]
root        52     2  0 19:16 ?        00:00:00 [crypto/0]
root        53     2  0 19:16 ?        00:00:00 [crypto/1]
root        60     2  0 19:16 ?        00:00:00 [kthrotld/0]
root        61     2  0 19:16 ?        00:00:00 [kthrotld/1]
root        62     2  0 19:16 ?        00:00:00 [pciehpd]
root        64     2  0 19:16 ?        00:00:00 [kpsmoused]
root        65     2  0 19:16 ?        00:00:00 [usbhid_resumer]
root        66     2  0 19:16 ?        00:00:00 [deferwq]
root        98     2  0 19:16 ?        00:00:00 [kdmremove]
root        99     2  0 19:16 ?        00:00:00 [kstriped]
root       132     2  0 19:16 ?        00:00:00 [ttm_swap]
root       253     2  0 19:16 ?        00:00:00 [mpt_poll_0]
root       254     2  0 19:16 ?        00:00:00 [mpt/0]
root       255     2  0 19:16 ?        00:00:00 [scsi_eh_0]
root       258     2  0 19:16 ?        00:00:00 [scsi_eh_1]
root       259     2  0 19:16 ?        00:00:00 [scsi_eh_2]
root       379     2  0 19:16 ?        00:00:00 [jbd2/sda3-8]
root       380     2  0 19:16 ?        00:00:00 [ext4-dio-unwrit]
root       418     2  0 19:16 ?        00:00:00 [flush-8:0]
root       471     1  0 19:16 ?        00:00:00 /sbin/udevd -d
root       645     2  0 19:16 ?        00:00:00 [vmmemctl]
root       842     2  0 19:16 ?        00:00:00 [jbd2/sda1-8]
root       843     2  0 19:16 ?        00:00:00 [ext4-dio-unwrit]
root       844     2  0 19:16 ?        00:00:00 [jbd2/sdb1-8]
root       845     2  0 19:16 ?        00:00:00 [ext4-dio-unwrit]
root       881     2  0 19:16 ?        00:00:00 [kauditd]
root      1804     1  0 19:16 ?        00:00:00 auditd
root      1826     1  0 19:16 ?        00:00:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
root      1895     1  0 19:16 ?        00:00:00 /usr/sbin/sshd
ntp       1923     1  0 19:16 ?        00:00:00 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
root      1937     1  0 19:16 ?        00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root      1947     1  0 19:16 ?        00:00:01 /usr/local/nyTerminald/nyterminal
root      2039     1  0 19:16 ?        00:00:00 /usr/libexec/postfix/master
postfix   2045  2039  0 19:16 ?        00:00:00 pickup -l -t fifo -u
postfix   2046  2039  0 19:16 ?        00:00:00 qmgr -l -t fifo -u
root      2093     1  0 19:16 ?        00:00:01 /usr/local/nyTerminald/nyguard
root      2107     1  0 19:16 ?        00:00:01 crond
root      2820     1  0 19:17 tty1     00:00:00 /sbin/mingetty /dev/tty1
root      2822     1  0 19:17 tty2     00:00:00 /sbin/mingetty /dev/tty2
root      2824     1  0 19:17 tty3     00:00:00 /sbin/mingetty /dev/tty3
root      2828     1  0 19:17 tty4     00:00:00 /sbin/mingetty /dev/tty4
root      2830   471  0 19:17 ?        00:00:00 /sbin/udevd -d
root      2831     1  0 19:17 tty5     00:00:00 /sbin/mingetty /dev/tty5
root      2832   471  0 19:17 ?        00:00:00 /sbin/udevd -d
root      2834     1  0 19:17 tty6     00:00:00 /sbin/mingetty /dev/tty6
root      2872  1895  0 19:19 ?        00:00:00 sshd: root@pts/0
root      2876  2872  0 19:19 pts/0    00:00:00 -bash
root      3232     1  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3234  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3235  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3236  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3237  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3238  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3239  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3240  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3241  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
root      3909  2876  0 20:04 pts/0    00:00:00 ps -ef
[root@hexingxing ~]#  ps -ef | grep apache ## 筛选 apache 的进程
apache    3234  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3235  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3236  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3237  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3238  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3239  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3240  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3241  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
root      3959  2876  0 20:06 pts/0    00:00:00 grep apache
[root@hexingxing ~]#  ps -ef | grep httpd ## 筛选以 httpd 为进程名的 apache 的进程
root      3232     1  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3234  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3235  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3236  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3237  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3238  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3239  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3240  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
apache    3241  3232  0 19:30 ?        00:00:00 /usr/sbin/httpd
root      3927  2876  0 20:05 pts/0    00:00:00 grep httpd
[root@hexingxing ~]#  ps -ef | grep nginx ## 筛选 nginx 的进程,没有在运行的进程,因为前面已经停止了 nginx 的服务
root      3994  2876  0 20:08 pts/0    00:00:00 grep nginx
[root@hexingxing ~]#  kill 3232 ## 终止 3232 PPID 的进程,也就是 apache 的主进程
[root@hexingxing ~]#  kill 3232 ## 再次终止 3232 PPID 的进程,显示没有那个进程,说明已经终止掉了
-bash: kill: (3232) - 没有那个进程
[root@hexingxing ~]#  ps -ef | grep apache ## 筛选 apache 的进程,没有在运行的进程,已经完全终止掉了
root      4062  2876  0 20:13 pts/0    00:00:00 grep apache
[root@hexingxing ~]#  ps -ef ##查看整体的进程也没有了 apache 的进程服务
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 19:16 ?        00:00:01 /sbin/init
root         2     0  0 19:16 ?        00:00:00 [kthreadd]
root         3     2  0 19:16 ?        00:00:00 [migration/0]
root         4     2  0 19:16 ?        00:00:00 [ksoftirqd/0]
root         5     2  0 19:16 ?        00:00:00 [stopper/0]
root         6     2  0 19:16 ?        00:00:00 [watchdog/0]
root         7     2  0 19:16 ?        00:00:00 [migration/1]
root         8     2  0 19:16 ?        00:00:00 [stopper/1]
root         9     2  0 19:16 ?        00:00:00 [ksoftirqd/1]
root        10     2  0 19:16 ?        00:00:00 [watchdog/1]
root        11     2  0 19:16 ?        00:00:02 [events/0]
root        12     2  0 19:16 ?        00:00:03 [events/1]
root        13     2  0 19:16 ?        00:00:00 [events/0]
root        14     2  0 19:16 ?        00:00:00 [events/1]
root        15     2  0 19:16 ?        00:00:00 [events_long/0]
root        16     2  0 19:16 ?        00:00:00 [events_long/1]
root        17     2  0 19:16 ?        00:00:00 [events_power_ef]
root        18     2  0 19:16 ?        00:00:00 [events_power_ef]
root        19     2  0 19:16 ?        00:00:00 [cgroup]
root        20     2  0 19:16 ?        00:00:00 [khelper]
root        21     2  0 19:16 ?        00:00:00 [netns]
root        22     2  0 19:16 ?        00:00:00 [async/mgr]
root        23     2  0 19:16 ?        00:00:00 [pm]
root        24     2  0 19:16 ?        00:00:00 [sync_supers]
root        25     2  0 19:16 ?        00:00:00 [bdi-default]
root        26     2  0 19:16 ?        00:00:00 [kintegrityd/0]
root        27     2  0 19:16 ?        00:00:00 [kintegrityd/1]
root        28     2  0 19:16 ?        00:00:00 [kblockd/0]
root        29     2  0 19:16 ?        00:00:00 [kblockd/1]
root        30     2  0 19:16 ?        00:00:00 [kacpid]
root        31     2  0 19:16 ?        00:00:00 [kacpi_notify]
root        32     2  0 19:16 ?        00:00:00 [kacpi_hotplug]
root        33     2  0 19:16 ?        00:00:00 [ata_aux]
root        34     2  0 19:16 ?        00:00:00 [ata_sff/0]
root        35     2  0 19:16 ?        00:00:00 [ata_sff/1]
root        36     2  0 19:16 ?        00:00:00 [ksuspend_usbd]
root        37     2  0 19:16 ?        00:00:00 [khubd]
root        38     2  0 19:16 ?        00:00:00 [kseriod]
root        39     2  0 19:16 ?        00:00:00 [md/0]
root        40     2  0 19:16 ?        00:00:00 [md/1]
root        41     2  0 19:16 ?        00:00:00 [md_misc/0]
root        42     2  0 19:16 ?        00:00:00 [md_misc/1]
root        43     2  0 19:16 ?        00:00:00 [linkwatch]
root        46     2  0 19:16 ?        00:00:00 [khungtaskd]
root        47     2  0 19:16 ?        00:00:00 [kswapd0]
root        48     2  0 19:16 ?        00:00:00 [ksmd]
root        49     2  0 19:16 ?        00:00:00 [khugepaged]
root        50     2  0 19:16 ?        00:00:00 [aio/0]
root        51     2  0 19:16 ?        00:00:00 [aio/1]
root        52     2  0 19:16 ?        00:00:00 [crypto/0]
root        53     2  0 19:16 ?        00:00:00 [crypto/1]
root        60     2  0 19:16 ?        00:00:00 [kthrotld/0]
root        61     2  0 19:16 ?        00:00:00 [kthrotld/1]
root        62     2  0 19:16 ?        00:00:00 [pciehpd]
root        64     2  0 19:16 ?        00:00:00 [kpsmoused]
root        65     2  0 19:16 ?        00:00:00 [usbhid_resumer]
root        66     2  0 19:16 ?        00:00:00 [deferwq]
root        98     2  0 19:16 ?        00:00:00 [kdmremove]
root        99     2  0 19:16 ?        00:00:00 [kstriped]
root       132     2  0 19:16 ?        00:00:00 [ttm_swap]
root       253     2  0 19:16 ?        00:00:00 [mpt_poll_0]
root       254     2  0 19:16 ?        00:00:00 [mpt/0]
root       255     2  0 19:16 ?        00:00:00 [scsi_eh_0]
root       258     2  0 19:16 ?        00:00:00 [scsi_eh_1]
root       259     2  0 19:16 ?        00:00:00 [scsi_eh_2]
root       379     2  0 19:16 ?        00:00:00 [jbd2/sda3-8]
root       380     2  0 19:16 ?        00:00:00 [ext4-dio-unwrit]
root       418     2  0 19:16 ?        00:00:00 [flush-8:0]
root       471     1  0 19:16 ?        00:00:00 /sbin/udevd -d
root       645     2  0 19:16 ?        00:00:00 [vmmemctl]
root       842     2  0 19:16 ?        00:00:00 [jbd2/sda1-8]
root       843     2  0 19:16 ?        00:00:00 [ext4-dio-unwrit]
root       844     2  0 19:16 ?        00:00:00 [jbd2/sdb1-8]
root       845     2  0 19:16 ?        00:00:00 [ext4-dio-unwrit]
root       881     2  0 19:16 ?        00:00:00 [kauditd]
root      1804     1  0 19:16 ?        00:00:00 auditd
root      1826     1  0 19:16 ?        00:00:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
root      1895     1  0 19:16 ?        00:00:00 /usr/sbin/sshd
ntp       1923     1  0 19:16 ?        00:00:00 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
root      1937     1  0 19:16 ?        00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root      1947     1  0 19:16 ?        00:00:01 /usr/local/nyTerminald/nyterminal
root      2039     1  0 19:16 ?        00:00:00 /usr/libexec/postfix/master
postfix   2045  2039  0 19:16 ?        00:00:00 pickup -l -t fifo -u
postfix   2046  2039  0 19:16 ?        00:00:00 qmgr -l -t fifo -u
root      2093     1  0 19:16 ?        00:00:01 /usr/local/nyTerminald/nyguard
root      2107     1  0 19:16 ?        00:00:01 crond
root      2820     1  0 19:17 tty1     00:00:00 /sbin/mingetty /dev/tty1
root      2822     1  0 19:17 tty2     00:00:00 /sbin/mingetty /dev/tty2
root      2824     1  0 19:17 tty3     00:00:00 /sbin/mingetty /dev/tty3
root      2828     1  0 19:17 tty4     00:00:00 /sbin/mingetty /dev/tty4
root      2830   471  0 19:17 ?        00:00:00 /sbin/udevd -d
root      2831     1  0 19:17 tty5     00:00:00 /sbin/mingetty /dev/tty5
root      2832   471  0 19:17 ?        00:00:00 /sbin/udevd -d
root      2834     1  0 19:17 tty6     00:00:00 /sbin/mingetty /dev/tty6
root      2872  1895  0 19:19 ?        00:00:00 sshd: root@pts/0
root      2876  2872  0 19:19 pts/0    00:00:00 -bash
root      4063  2876  0 20:13 pts/0    00:00:00 ps -ef
[root@hexingxing ~]#  chkconfig --list | grep httpd  ##查看开机启用的服务,筛选 apache 的服务
httpd           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
[root@hexingxing ~]#  chkconfig --list | grep nginx ##查看开机启用的服务,筛选 nginx 的服务
nginx           0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭
[root@hexingxing ~]#  service httpd start ##开启 apache 服务
正在启动 httpd:                                               [确定]
[root@hexingxing ~]#  service nginx start ##开启 nginx 服务,开启失败,由于前面已经开始了 apache ,所以启用失败
正在启动 nginx:nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
[失败]
[root@hexingxing ~]#  service nginx status ##查看 nginx 服务状态,已经停止
nginx 已停止
[root@hexingxing ~]#  service httpd status ##查看 apache 服务状态,正在运行
httpd (pid  5578) 正在运行...

HTTPS 时代,使用 Certbot (Let’s Encrypt)

nginx on centos install certbot (letsencrypt)

[root@hexingxing ~]#  yum install epel-release //更新系统
[root@hexingxing ~]#  yum install -y git //安装 git
[root@hexingxing ~]#  git clone https://github.com/certbot/certbot //git 下载 certbot
Initialized empty Git repository in /certbot/.git/
remote: Counting objects: 51598, done.
remote: Compressing objects: 100% (133/133), done.
remote: Total 51598 (delta 101), reused 99 (delta 48), pack-reused 51415
Receiving objects: 100% (51598/51598), 16.12 MiB | 2.64 MiB/s, done.
Resolving deltas: 100% (36980/36980), done.
[root@hexingxing ~]#  cd certbot 切换到 certbot 目录
[root@hexingxing certbot]# ./certbot-auto 执行自动 TUI 模式生成证书

Bootstrapping dependencies for RedHat-based OSes... (you can skip this with --no-bootstrap)
yum is /usr/bin/yum
Loaded plugins: fastestmirror, refresh-packagekit, security
…

如果提示 “Could not install OS dependencies. Aborting bootstrap!” 那么按提示的详细说明操作,
如果提示 “Transaction check error: ” 类信息说明库的新旧版本不对,删除对应的版本即可,例如 “krb5-libs-1.10.3-57.el6.x86_64”,命令如下:

[root@hexingxing certbot]# rpm -e krb5-libs-1.10.3-57.el6.x86_64

然后再次./certbot-auto,直接后面的操作出现如下提示要求输入 email 地址,

[root@hexingxing certbot]# ./certbot-auto
Creating virtual environment...
Installing Python packages...
Installation succeeded.
/opt/eff.org/certbot/venv/lib/python2.6/site-packages/cryptography/__init__.py:26: DeprecationWarning: 
Python 2.6 is no longer supported by the Python core team, please upgrade your Python. 
A future version of cryptography will drop support for Python 2.6
DeprecationWarning
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): //输入你常用的邮箱地址

Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: a //接受协议或条款之类,必选 a

-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o: n //是不是愿意公开你的邮箱地址,按自己想法

How would you like to authenticate and install certificates?
-------------------------------------------------------------------------------
1: Apache Web Server plugin - Beta (apache)
2: Nginx Web Server plugin - Alpha (nginx)
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 //选择 apache 或 nginx 程序
Plugins selected: Authenticator nginx, Installer nginx
No names were found in your configuration files. Please enter in your domain
name(s) (comma and/or space separated) (Enter 'c' to cancel): //第一种情况:没有检测到域名配置文件,手动输入域名

Which names would you like to activate HTTPS for?
-------------------------------------------------------------------------------
1: test.hexingxing.cn //第二种情况,如果是已配置 SSL.conf,这里会显示你服务器已配置的域名列表,on:/etc/nginx/conf.d/
-------------------------------------------------------------------------------
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1 //选择你要创建证书的域名
Obtaining a new certificate
Performing the following challenges:
tls-sni-01 challenge for test.hexingxing.cn
Waiting for verification...
Cleaning up challenges
Deployed Certificate to VirtualHost /etc/nginx/conf.d/test.hexingxing.conf for set(['test.hexingxing.cn'])

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 //是否立即生效重定向到 https
Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/test.hexingxing.conf

-------------------------------------------------------------------------------
Congratulations! You have successfully enabled https://test.hexingxing.cn //恭喜! 您已成功启用 https://test.hexingxing.cn

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=test.hexingxing.cn //可以访问这个链接测试你的 HTTPS 质量
-------------------------------------------------------------------------------

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
// 此处省略了很多字,关于证书密钥文件的存放情况以及到期时间

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

90 天后自动续期:
设置自动续期定时任务
先使用以下命令测试手动模拟更新证书

[root@hexingxing ~]# {certbot 的绝对或相对路径}/certbot-auto renew --dry-run

输出类似以下提示说明命令配置正常

[root@hexingxing ~]# -------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/example.com.conf
-------------------------------------------------------------------------------
** DRY RUN: simulating 'certbot renew' close to cert expiry
** (The test certificates below have not been saved.)
Congratulations, all renewals succeeded. The following certs have been renewed:
/etc/letsencrypt/live/example.com/fullchain.pem (success)
** DRY RUN: simulating 'certbot renew' close to cert expiry
** (The test certificates above have not been saved.)
IMPORTANT NOTES:
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.

使用 crontab -e 命令设置定时任务,自动更新证书

[root@hexingxing ~]# crontab -e
0 3 1 * * {certbot 的绝对或相对路径}/certbot-auto renew >> /var/log/le-renew.log

执行时间为:每个月的 1 日凌晨 3 点 0 分 执行 renew 任务
执行以下命令后查看输出的日志是否正常,一般不到指定更新时间内输出 “No renewals were attempted.” 提示

[root@hexingxing ~]# {certbot 的绝对或相对路径}/certbot-auto renew >> /var/log/le-renew.log

如果需要强制执行,可使用以下命令,输出的内容会提示已经更新。

[root@hexingxing ~]# {certbot 的绝对或相对路径}/certbot-auto renew --force-renew

nginx https 证书配置

HTTP 301 重定向 HTTPS

Nginx 出现 413 Request Entity Too Large 问题的解决方法

使用 PHP 上传图片(大小 1.2M),出现 nginx: 413 Request Entity Too Large 错误。
一般可能是服务器限制了上传文件的大小,但 php 默认的文件上传是 2M,应该不会出现问题。

打开 php.ini 配置文件,把 upload_max_filesizepost_max_size 修改为 20M,然后重启。
再次上传,问题依旧,可以排除 php 方面的问题。

后来发现 Nginx 默认上传文件的大小是 1M,可通过 Nginx 的设置来修改:
1、打开 Nginx 配置文件 nginx.conf, 路径一般是:/etc/nginx/nginx.conf
2、在 http{} 段中加入 client_max_body_size 20m; 20m 为允许最大上传的大小;
3、保存后重启 Nginx,问题解决。

如果是通过 phpMyAdmin 导入,那选择 “从网站服务器上传文件夹 /var/lib/phpMyAdmin/upload/ ” 方式导入,这样即使没有设置以上配置也能正常导入。

CentOS 6.8 配置 LNMP(Linux+Nginx+PHP5+MySQL)

1、使用 yum 直接安装 Nginx

[root@hexingxing ~]#  yum install -y nginx
已加载插件:fastestmirror, refresh-packagekit, security
设置安装进程
Determining fastest mirrors
* base: mirrors.163.com
* extras: mirrors.163.com
* updates: mirrors.nwsuaf.edu.cn
No package nginx available.
错误:无须任何处理

## 系统不能直接 yum install nginx,判断可能 yum 源有问题

2、下载 Nginx 源

[root@hexingxing html]# rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
Retrieving http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
warning: /var/tmp/rpm-tmp.KcjpHW: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY
Preparing...                ########################################### [100%]
1:nginx-release-centos   ########################################### [100%]

##下载成功

3、查看 Nginx 源是否下载成功

[root@hexingxing ~]# ls /etc/yum.repos.d/
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-fasttrack.repo  CentOS-Media.repo  CentOS-Vault.repo  nginx.repo

## 在/etc/yum.repos.d/ 存在 nginx.repo 文件,那么可以安装了,为了确认是否可安装,先查看下 Nginx 的软件信息

4、查看 Nginx 软件信息

[root@hexingxing html]# yum info nginx
已加载插件:fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* base: mirror.bit.edu.cn
* extras: ftp.sjtu.edu.cn
* updates: centos.ustc.edu.cn
nginx                                                                                                                                                     | 2.9 kB     00:00
nginx/primary_db                                                                                                                                          |  15 kB     00:00
可安装的软件包
Name        : nginx
Arch        : x86_64
Version     : 1.10.1
Release     : 1.el6.ngx
Size        : 821 k
Repo        : nginx
Summary     : High performance web server
URL         : http://nginx.org/
License     : 2-clause BSD-like license
Description : nginx [engine x] is an HTTP and reverse proxy server, as well as
: a mail proxy server.

## 可以获取到 Nginx 的软件信息,说明已经可以安装了

5、安装 Nginx

[root@hexingxing ~]# yum install nginx
已加载插件:fastestmirror, refresh-packagekit, security
设置安装进程
Loading mirror speeds from cached hostfile
* base: mirror.bit.edu.cn
* extras: ftp.sjtu.edu.cn
* updates: centos.ustc.edu.cn
解决依赖关系
--> 执行事务检查
---> Package nginx.x86_64 0:1.10.1-1.el6.ngx will be 安装
--> 完成依赖关系计算

依赖关系解决

=================================================================================================================================================================================
软件包                                 架构                                    版本                                                仓库                                    大小
=================================================================================================================================================================================
正在安装:
nginx                                  x86_64                                  1.10.1-1.el6.ngx                                    nginx                                  821 k

事务概要
=================================================================================================================================================================================
Install       1 Package(s)

总下载量:821 k
Installed size: 2.1 M
确定吗?[y/N]:y
下载软件包:
nginx-1.10.1-1.el6.ngx.x86_64.rpm                                                                                                                         | 821 kB     00:23
运行 rpm_check_debug
执行事务测试
事务测试成功
执行事务
Warning: RPMDB altered outside of yum.
正在安装   : nginx-1.10.1-1.el6.ngx.x86_64                                                                                                                                 1/1
----------------------------------------------------------------------

Thanks for using nginx!

Please find the official documentation for nginx here:
* http://nginx.org/en/docs/

Commercial subscriptions for nginx are available on:
* http://nginx.com/products/

----------------------------------------------------------------------
Verifying  : nginx-1.10.1-1.el6.ngx.x86_64                                                                                                                                 1/1

已安装:
nginx.x86_64 0:1.10.1-1.el6.ngx

完毕!

##Nginx 安装完成

6、启动 Nginx

[root@hexingxing ~]# service nginx start
正在启动 nginx:nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
[失败]

##发现启动 Nginx 失败,根据以上错误信息,我发现可能是因为之前已安装并启动了 Apache,可能因此而报错,所以我现在停止 Apache 服务

6、停止 Apache

[root@hexingxing ~]# service httpd stop
停止 httpd:                                               [确定]

##停止 Apache

7、启动 Nginx

[root@hexingxing ~]# service nginx start
正在启动 nginx:                                           [确定]

##启动 Nginx 成功

8、访问服务器 IP

Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

##访问服务器 IP 出现以上提示,说明 Nginx 已经安装成功并且可用,Nginx 的 Web 默认目录为 /usr/share/nginx/html/ ,可在此目录下放置网站文件,安装了 PHP 后可运行 PHP 网站。

 

到此,Nginx 已经安装成功。如果 Nginx 的 Web 页面不能访问可能还需要配置服务器的防火墙,配置防火墙和继续安装 MySQL 和 PHP ,可以参考何星星之前写的一篇《CentOS 6.8 配置 LAMP(Linux+Apache+PHP+MySQL)环境》。

 

Nginx 301 永久跳转和 URL 重写(用于域名更换和 http 跳转 https)

# 域名 301 永久跳转 (www2nonewww),单独用于一条 server{} 字段,与正式 server{} 同时存在。
# 配置文件默认位于 [root@hexingxing conf.d]# pwd
# /etc/nginx/conf.d
server {
    listen 80;
    server_name www.domain.com;
    # $scheme will get the http protocol
    # and 301 is best practice for tablet, phone, desktop and seo
    return 301 $scheme://domain.com$request_uri;
}
# 域名 https URL 重写 (http2https)
# 配置文件默认位于 [root@hexingxing conf.d]# pwd
# /etc/nginx/conf.d
server {
    listen       80;
    # listen       80 default_server;
    # listen       [::]:80 default_server;
    server_name  domanin.com;
    root         /tmp/sev;
    rewrite ^(.*)$  https://$host$1 permanent;
    ...
}

WordPress 设置固定链接

#Nginx set WordPress /%postname%/
# 配置文件默认位于 [root@hexingxing conf.d]# pwd
# /etc/nginx/conf.d
# 如果默认使用 HTTPS ,则在 HTTPS 配置中添加,反之则在 nginx.conf 中添加。
location / {
root /www/abc.com;
index index.php index.html index.htm; 

if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
}
rewrite /wp-admin$ $scheme://$host$uri/ permanent; #防止打开后台、插件页等打不开
#...

注意:
如果使用了 https 配置,需要在 ssl https conf.d 配置文件中添加以上字段。

Samba:Linux 与 Windows 建立 SMB 协议文件共享

一、安装 Samba

[root@hexingxing ~]# yum -y install samba
……
Installed:
  samba.x86_64 0:3.6.23-42.el6_9                                                

Dependency Updated:
  libsmbclient.x86_64 0:3.6.23-42.el6_9                                         
  samba-common.x86_64 0:3.6.23-42.el6_9                                         
  samba-winbind.x86_64 0:3.6.23-42.el6_9                                        
  samba-winbind-clients.x86_64 0:3.6.23-42.el6_9                                

Complete!

二、创建共享文件夹

[root@hexingxing ~]# mkdir /common 

// 创建共享文件夹

[root@hexingxing ~]# chmod 777 /common

// 修改文件夹权限

[root@hexingxing ~]# echo "hello" > /common/smb.txt

// 向共享文件夹里输入一个文本文件,稍后可读取表示共享成功

[root@hexingxing /]# ll 
drwxrwxrwx.   2 root root  4096 May 13 19:58 common
……

// 确认权限为全部为读、写、执行

三、建立用户

[root@hexingxing ~]# useradd hxx #创建 Linux 用户
[root@hexingxing ~]# passwd hxx #创建指定用户密码
passwd: all authentication tokens updated successfully. #密码配置成功
[root@hexingxing ~]# smbpasswd -a hxx #创建 Smb 用户,此用户必须是已经建立的 Linux 用户
New SMB password:  #创建 Smb 密码
Retype new SMB password: #确认 Smb 密码
Added user hxx. #表示 hxx 用户加入 Smb 成功
[root@hexingxing ~]# smbpasswd < 用户名>  #修改 smb 密码

四、添加 smb 配置

[root@hexingxing ~]# vi /etc/samba/smb.conf
[common] #配置名称,用于在 Windows 共享所显示的名称
comment= Common #描述,用于备注作用
path = /common #指定共享的路径(重要,要与本地已存在的目录一致,否则无法授权共享权限)
browseable = yes #path 指定的目录是否可见
guest ok = no #是否可以访客访问
writable = yes #是否可以写入

// 在 /etc/samba/smb.conf 文件尾部添加以上内容

五、修改 SElinux,以下操作任选一种即可
1:命令如下,立即生效

[root@hexingxing ~]# setenforce 0
setenforce: SELinux is disabled


2:命令如下,重启生效

[root@hexingxing ~]# vi /etc/sysconfig/selinux

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
# SELINUX=enforcing
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted
SELINUX=disabled

// 注释 “SELINUX=enforcing”,添加 “SELINUX=disabled” 记录
//第一种方式可以不用重启,第二种方式完成后必须重启系统

六、重启系统后,操作以下两个步骤
1、将防火墙关闭(如果未永久关闭)

[root@hexingxing ~]# service iptables stop
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
[root@hexingxing ~]# service iptables status
iptables: Firewall is not running.

2、重启 smb 服务(如果未开启开机启动)

[root@hexingxing ~]# service smb start
Starting SMB services: 
[root@hexingxing ~]# service smb restart
Shutting down SMB services:                                [  OK  ]
Starting SMB services:                                     [  OK  ]

七、至此,完成 Linux 与 Windows 建立 SMB 协议文件共享安装配置。
在 Windows 上可以通过 Linux 服务器的 IP 和用户密码访问共享的文件,如果可以打开前面在 Linux 上输入的 smb.txt 文本说明配置正确,也可以写入文件后在 Linux 上使用。

// 附 Samba 配置参数说明
#================== Share Definitions ==================

[共享名]

说明:共享名 是该共享的文件夹名称,用于在 Windows 共享所显示的名称。

comment = 任意字符串

说明:comment 是对该共享的描述,可以是任意字符串。

path = 共享目录路径

说明:path 用来指定共享目录的路径。可以用%u、%m 这样的宏来代替路径里的 unix 用户和客户机的 Netbios 名,用宏表示主要用于 [homes] 共享域。例如:如果我们不打算用 home 段做为客户的共享,而是在/home/share/下为每个 Linux 用户以他的用户名建个目录,作为他的共享目录,这样 path 就可以写成:path = /home/share/%u; 。用户在连接到这共享时具体的路径会被他的用户名代替,要注意这个用户名路径一定要存在,否则,客户机在访问时会找不到网络路径。同样,如果我们不是以用户来划分目录,而是以客户机来划分目录,为网络上每台可以访问 samba 的机器都各自建个以它的 netbios 名的路径,作为不同机器的共享资源,就可以这样写:path = /home/share/%m 。

browseable = yes/no

说明:browseable 用来指定该共享是否可以浏览。

writable = yes/no

说明:writable 用来指定该共享路径是否可写。

available = yes/no

说明:available 用来指定该共享资源是否可用。

admin users = 该共享的管理者

说明:admin users 用来指定该共享的管理员(对该共享具有完全控制权限)。在 samba 3.0 中,如果用户验证方式设置成 “security=share” 时,此项无效。
例如:admin users =david,sandy(多个用户中间用逗号隔开)。

valid users = 允许访问该共享的用户

说明:valid users 用来指定允许访问该共享资源的用户。
例如:valid users = david,@dave,@tech(多个用户或者组中间用逗号隔开,如果要加入一个组就用 “@组名” 表示。)

invalid users = 禁止访问该共享的用户

说明:invalid users 用来指定不允许访问该共享资源的用户。
例如:invalid users = root,@bob(多个用户或者组中间用逗号隔开。)

write list = 允许写入该共享的用户

说明:write list 用来指定可以在该共享下写入文件的用户。
例如:write list = david,@dave

public = yes/no

说明:public 用来指定该共享是否允许 guest 账户访问。

guest ok = yes/no

说明:意义同 “public”。

搭建 LNMP 环境之 Nginx 与 PHP (FastCGI) 的配置

一、安装和启动 nginx
1.1、安装 nginx

[root@hexingxing ~]# yum install -y nginx
// ...

Installed:
nginx.x86_64 0:1.10.2-1.el6

Dependency Installed:
GeoIP.x86_64 0:1.6.5-1.el6                                             GeoIP-GeoLite-data.noarch 0:2016.07-1.el6
GeoIP-GeoLite-data-extra.noarch 0:2016.07-1.el6                        gd.x86_64 0:2.0.35-11.el6
geoipupdate.x86_64 0:2.2.1-2.el6                                       libXpm.x86_64 0:3.5.10-2.el6
libxslt.x86_64 0:1.1.26-2.el6_3.1                                      nginx-all-modules.noarch 0:1.10.2-1.el6
nginx-filesystem.noarch 0:1.10.2-1.el6                                 nginx-mod-http-geoip.x86_64 0:1.10.2-1.el6
nginx-mod-http-image-filter.x86_64 0:1.10.2-1.el6                      nginx-mod-http-perl.x86_64 0:1.10.2-1.el6
nginx-mod-http-xslt-filter.x86_64 0:1.10.2-1.el6                       nginx-mod-mail.x86_64 0:1.10.2-1.el6
nginx-mod-stream.x86_64 0:1.10.2-1.el6

Complete!

1.2.1、启动 nginx

[root@hexingxing ~]# service nginx start
Starting nginx: nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol)
[FAILED]

// 启动失败,看错误提示描述 “ [::]:80 failed ”,到 nginx 配置里修改下 [::]:80 端口的监听

1.2.2、修改 [::]:80 端口的监听

[root@hexingxing ~]# vi /etc/nginx/conf.d/default.conf

#
# The default server
#

server {
listen       80 default_server;
# listen       [::]:80 default_server;
server_name  _;
root         /usr/share/nginx/html;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location / {
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}

}

// 将 listen       [::]:80 default_server; 行注释,使其不生效
// 在这之前,正常的 Linux 操作习惯为:把 default.conf 文件备份后再修改

1.3、再次启动 nginx

[root@hexingxing ~]# service nginx start
Starting nginx:                                            [  OK  ]

// 启动 nginx 成功

1.4、设置 nginx 开机启动

[root@hexingxing ~]# chkconfig --list nginx
nginx           0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@hexingxing ~]# chkconfig nginx on
[root@hexingxing ~]# chkconfig --list nginx
nginx           0:off 1:off 2:on 3:on 4:on 5:on 6:off

1.5、验证 nginx 页面
至此,已经成功安装和启动 nginx,在浏览器上输入你的服务器 IP 即可打开你的 nginx 欢迎页面,但是在这之前你可能还需要配置防火墙和 SELINUX 才能访问。

[web view]

二、安装和配置 php

2.1 安装 php

[root@hexingxing ~]# yum install -y php
// ...

Installed:
php.x86_64 0:5.3.3-48.el6_8

Dependency Installed:
apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1     httpd.x86_64 0:2.2.15-55.el6.centos.2     httpd-tools.x86_64 0:2.2.15-55.el6.centos.2
php-cli.x86_64 0:5.3.3-48.el6_8            php-common.x86_64 0:5.3.3-48.el6_8

Complete!

2.2 安装 php-fpm
// PHP-FPM(FastCGI Process Manager) ,使 nginx 支持 php

[root@hexingxing ~]# yum install -y php-fpm
// ...

Installed:
php-fpm.x86_64 0:5.3.3-48.el6_8

Complete!

2.3 启动 php-fpm

[root@hexingxing ~]# service php-fpm start
Starting php-fpm:                                          [  OK  ]

2.4 设置 php-fpm 为开机启动

[root@iZuf6e4ja95z77dnvzmssrZ conf.d]# chkconfig --list php-fpm
php-fpm         0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@iZuf6e4ja95z77dnvzmssrZ conf.d]# chkconfig php-fpm on
[root@iZuf6e4ja95z77dnvzmssrZ conf.d]# chkconfig --list php-fpm
php-fpm         0:off 1:off 2:on 3:on 4:on 5:on 6:off

2.5 修改 nginx 支持 php

2.5.1、先将需要修改的文件备份

[root@hexingxing ~]# cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
[root@hexingxing ~]# ls /etc/nginx/conf.d/
default.conf  default.conf.bak  ssl.conf  virtual.conf

2.5.2、修改文件

#
# The default server
#

server {
listen       80 default_server;
# listen       [::]:80 default_server;
server_name  _;
root         /usr/share/nginx/html;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location / {
index index.html index.htm index.php;
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}

# 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;
fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
include        fastcgi_params;
}

}

// 在以上文件中修改以下两处:
2.5.3、将默认的以下字段:

location / {
}

修改为:

location / {
index index.html index.htm index.php;
}

2.5.4、在最后一个 “}” 之前添加以下字段:

# 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;
fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
include        fastcgi_params;
}

注意: fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name; 字段中的 “/usr/share/nginx/html” 为你的默认或自定义 web 文件存放处,如果没有修改即是此位置。
注意: location ~ \.php$ {        root           html;        fastcgi_pass   127.0.0.1:9000; 处的 root           html; 为存放 web 文件的文件夹,可以写调用值函数或绝对值位置。

2.5.5、如果你不只一个配置文件,将字段:

listen       80 default_server;

修改为:

listen       80;

// 以上修改完成后,重启 php-fpm 和 nginx ,service php-fpm restart | service nginx restart

2.5.6、重名默认的 index.html 为 index.html.bak

[root@hexingxing ~]# mv /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.bak
[root@hexingxing ~]# ls /usr/share/nginx/html/
404.html  50x.html  index.html.bak  nginx-logo.png  poweredby.png

2.5.7、写个 php 的验证文件

[root@hexingxing ~]# echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/index.php
[root@hexingxing ~]# ls /usr/share/nginx/html/
404.html  50x.html  index.html.bak  index.php  nginx-logo.png  poweredby.png

3、测试 php 版本页面
打开默认的首页,如果显示为 php 版本页面,那说明已经配置成功。

4、配置文件参考
由于环境和配置以及版本不同,可能你参考本文配置后显示的结果不一样,以下为可能是你需要用到的配置默认或能帮助到你找到问题。

“/etc/nginx/conf.d/default.conf” 文件 1

server {
listen       80;
server_name  localhost;
#charset koi8-r;
#access_log  /var/log/nginx/log/host.access.log  main;
location / {
root   /etc/nginx/html;
index  index.html index.htm index.php;
}
#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   /etc/nginx/html;
}
# 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;
fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
include        fastcgi_params;
}
}

“/etc/nginx/conf.d/default.conf” 文件 2

server {
listen 80;
server_name yourdomain.com;
location / {
root   /opt/app/yourdomain-dir;
index  index.php index.html index.htm;
}
# 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;
fastcgi_param  SCRIPT_FILENAME  /opt/app/yourdomain-dir$fastcgi_script_name;
include        fastcgi_params;
}
}

拦截未绑定的域名访问服务器

[root@hexingxing conf.d]# pwd
/etc/nginx/conf.d

进入 Nginx 配置文件目录

server {
 listen 80 default_server;
 #listen [::]:80 default_server;
 server_name _;
 root /usr/share/nginx/html;

 # Load configuration files for the default server block.
 include /etc/nginx/default.d/*.conf;

 location / {
 }

 error_page 404 /404.html;
 location = /40x.html {
 }

 error_page 500 502 503 504 /50x.html;
 location = /50x.html {
 }

}

确认 default.conf 文件是系统默认的配置(以上配置通常为系统默认,如有修改,请配置如上信息,如 root 位置没有指定文件,即自动跳到 404 文件),所有没有指定域名的 80 端口访问会打开/usr/share/nginx/html 内的索引文件

[root@hexingxing html]# pwd
/usr/share/nginx/html

默认的 80 端口访问会打开以下位置的 html 文件

此时,只要将 /usr/share/nginx/html 内的 404.html、50x.html、index.html 文件分别修改成 “温馨提示” 信息或跳转到你指定的位置,将未绑定的域名和通过服务器 IP 的访问进行单独处理。

Linux 隐藏 Nginx 和 PHP 版本信息

1、隐藏 Nginx 版本信息

进入 Nginx 配置文件的目录,默认在 /etc/nginx/ 目录下,用 vi 编辑打开

[root@hexingxing nginx]# vi nginx.conf

在 http {…} 里添加 server_tokens off; 字段,如:

http {
...
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
server_tokens off;
...
}

重启 Nginx 服务即可生效

[root@hexingxing nginx]# service nginx restart

2、隐藏 PHP 版本信息
进入 PHP 配置文件的目录,默认在 /etc/ 目录下,用 vi 编辑打开

[root@hexingxing etc]# vi php.ini

在 php.ini 文件里使用 / expose_php 命令搜索到对应字段位置后,将 expose_php = On 改为 expose_php = Off
重启 PHP 服务即可生效

[root@hexingxing etc]# service php-fpm restart

HTTPS 证书配置

#
# HTTPS server configuration 
# 配置文件默认位于 [root@hexingxing conf.d]# pwd
# /etc/nginx/conf.d
#

server {
listen 443;
ssl on;
server_name  yourname.com; #指向服务器的域名
root         /yourdir/httpfile; #网页文件存放在位置
index index.php index.html index.htm;
ssl_certificate   /etc/nginx/sslkey/yourpemcode.pem; #cert.pem 文件,注意文件的位置
ssl_certificate_key  /etc/nginx/sslkey/yourkeycode.key; #cert.key 文件,注意文件的位置
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
ssl_prefer_server_ciphers on;
location / {
root /yourdir/httpfile; #网页文件存放在位置
index index.php index.html index.htm;
}



    # 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;
        fastcgi_param  SCRIPT_FILENAME  /yourdir/httpfile$fastcgi_script_name; #网页文件存放在位置
        include        fastcgi_params;
    }

}

#
#    error_page 404 /404.html;
#        location = /40x.html {
#    }
#
#    error_page 500 502 503 504 /50x.html;
#        location = /50x.html {
#    }
#}