Nginx 配置文件详解

主配置文件

# /etc/nginx/nginx.conf
user  nginx nginx;    #设置nginx用户
worker_processes  2;    #工作进程数 一般是cpu的核数
error_log  logs/error.log;    #错误日志的地址
error_log  logs/error.log  notice;    #错误记录的类型 并指定 对应文件
error_log  logs/error.log  info;    #错误记录的类型
pid        logs/nginx.pid;    #pid 存放目录
events {
    worker_connections  1024;    #每个进程最大允许的连接数
}
http {
    include       mime.types;    #设定mime类型,类型又mime.type文件定义
    default_type  application/octet-stream;    #设置默认类型
    #设置日志格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  logs/access.log  main;    #成功日志
    sendfile        on;    #指定nginx是否有调用sendfile函数来输出文件 对于普通应用
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;    #连接超时时间
    #gzip  on;    #是否开启gzip压缩

    include /usr/local/nginx/conf/conf.d/*.conf;    #包含文件
}

子配置文件

# /etc/nginx/conf.d/wordpress.conf
#HTTP server
server {
    listen       80;
    server_name  blog.kingofzihua.top;

    if ($host = blog.kingofzihua.top) {
        return 301 https://$host$request_uri;
    }

    return 404;
}
# HTTPS server
server {
        listen       443;    #监听的端口
        server_name   blog.kingofzihua.top;    #域名 或者是IP
        # 设置SSL证书
        ssl_certificate /etc/letsencrypt/live/blog.kingofzihua.top/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/blog.kingofzihua.top/privkey.pem;
        include /etc/letsencrypt/options-ssl-nginx.conf;
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        #定义项目根路径
        root   /www/wordpress;
        location / {
            index  index.html index.htm;
        }
        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html; #错误页面
        # 错误页面所在目录
        location = /50x.html {
            root   html;
        }
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        # 解析.php结尾的
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000; #指定解析的端口 可以写 unix:/var/run/php5-fpm.sock;
            fastcgi_index  index.php; # 指定默认访问的PHP文件
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name; #$document_root 就是上面设置的root
            include        fastcgi_params;
        }
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
}

CentOS6 用 Let’s Encrypt 和 certbot 搭建 https

安装

打开certbot 官网,选择服务器软件和系统(我的是 NGINX+ CentOS6)

由于CentOS6没有打包版本的Certbot,因此您应该使用certbot-auto脚本来获取副本:

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto

certbot-auto是和 certbot一样的; 它是一个包装器,可以安装所有自己的依赖项并自动更新客户端代码。

注意:
certbot-auto将一直试图从其最新版本中获取最新版本的自身。如果您希望将其锁定到特定版本并且未收到自动更新,请使用–no-self-upgrade标志运行它 。另外,如果您对从网络上下载和运行脚本感到紧张,则可以使用一些额外的验证步骤。

开始使用

Certbot有一个Nginx插件,它在许多平台上都受支持,并且安装了证书。

sudo ./path/to/certbot-auto --nginx

运行此命令将为您获得证书,并让Certbot自动编辑您的Nginx配置以便为其提供服务。如果您感觉更保守,并且想手动更改Nginx配置,则可以使用certonly 子命令:

sudo ./path/to/certbot-auto --nginx certonly

自动更新

Certbot可以配置为在证书过期之前自动续订您的证书。自从让我们将证书最后加密90天后,最好利用此功能。您可以通过运行以下命令来测试证书的自动续订:
$ sudo ./path/to/certbot-auto renew –dry-run
如果这似乎工作正常,您可以通过添加运行以下命令的cron作业或systemd计时器来安排自动续订:
./path/to/certbot-auto renew

注意:
如果您正在设置cron或systemd作业,我们建议每天运行两次(在您的证书到期续约或撤消之前,它不会执行任何操作,但定期运行它可以让您的站点保持在线状态案例a让我们加密发起的撤销是由于某种原因发生的)。请在一小时内为您的续订任务选择一个随机分钟。