CentOS上搭建Nginx+HTTPS个人服务器

在CentOS上搭建Nginx+HTTPS个人服务器


先说说为什么要搭https,就是因为小绿锁有点好看的(* ̄ω ̄)

  1. 环境:CentOS 6.9(腾讯云服务器,学生优惠版)
  2. 前期准备:腾讯实验室-使用CentOS搭建个人Wordpress博客

跟着上面的实验室一步步走,应该可以成功运行。具体步骤网上资料也很多,我就不再写了,这里重点写一写遇到的问题和解决方法。

一、Nginx启用HTTPS

  1. 首先腾讯云的域名可以申请为期一年的免费SSL证书,这里注意一点:申请的免费证书只能为申请时标注的域名(exapmle.com)生效,对其下的二级域名(else.example.com)不可用,需要再次申请,不过还是免费的。
  2. 证书审核通过之后,下载获得www.example.com.zip文件。
  3. 将解压后的文件发送到服务器端,保存在服务器上。
  4. 跟随安装指引
  5. 访问域名应该可以出现小绿锁了!

二、启用二级域名

为了区分功能模块,将前期准备时安装的wordpress与后续的其他网页分隔开,需要启用blog二级域名,将Nginx配置文件拆分成子文件,并分别配置。

  • /etc/nginx/conf.d 文件夹内新建配置文件 wordpress.conf 并为二级域名进行配置,配置文件内容与一级域名的配置相似,主要修改server_nameroot

    server {
        listen 443;#监听443端口
    
        server_name blog.example.cn;   #填写绑定证书的域名
        ssl on;
    
        ssl_certificate 1_blog.example.cn_bundle.crt;  #证书文件
        ssl_certificate_key 2_blog.example.cn.key;
    
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   #按照这个协议配置
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
        ssl_prefer_server_ciphers on;
    
        root /your/path/to/wordpress;  #wordpress安装路径
    
        location / {   
            index  index.html index.htm index.php;
            try_files $uri $uri/ /index.php index.php;
        }
    
        #添加对php文件的支持                                                                        
        location ~ .php$ {  
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            includefastcgi_params;
        }
    }
  • 配置拆分之后,在/etc/nginx/nginx.conf 就仅剩以下内容

    user  nginx;
    worker_processes  1;
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    events {
        worker_connections  1024;
    }
    
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
        sendfile        on;
    
        #tcp_nopush     on;
        keepalive_timeout  65;
    
        #gzip  on;
        include /etc/nginx/conf.d/*.conf;
    }

重要的部分在于后面的include这里保证了我们在conf.d文件夹中编写的配置最终会生效。

  • 为了保证全站HTTPS,我在conf.d文件夹内还将80端口转发单独列出来

    server {
        listen 80;
        server_name www.example.cn blog.example.cn;
        rewrite ^(.*)$ https://${server_name}$1 permanent;
    }

三、File not found 错误

使用php-fpm解析PHP,"No input file specified","File not found"是令nginx新手头疼的常见错误,原因是php-fpm进程找不到SCRIPT_FILENAME配置的要执行的.php文件,php-fpm返回给nginx的默认404错误提示。

  • 错误的路径被发送到php-fpm进程

出现这类错误,十个有九个是后端fastcgi进程收到错误路径(SCRIPT_FILENAME),而后端fastcgi收到错误路径的原因大都是配置错误。

fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

这行配置文件尤其重要,大部分是因为这里配置出错导致的,正确配置之后可以恢复。

  • 读取文件的权限不够

常见的有比如没有修改webapp文件夹的读取或执行权限

这里建议对nginx配置文件标注的root文件夹极其子文件夹和文件,使用chmod命令更改权限。必要时请升权。

chmod -R 755 /your/path/to/web/apps
  • PHP-FPM进程监听的不是127.0.0.1:9000

这里使用netstat命令查看端口占用情况。

netstat -atnlp | grep php-fpm

根据找到的结果,修改配置文件中的php转发配置即可。

fastcgi_pass   127.0.0.1:9000;

以上就是笔者配置Nginx时遇到的一些问题和解答方案。以后在自己的服务器上玩耍时遇到的问题还会继续记录。

猜你喜欢

转载自www.cnblogs.com/georgeyang/p/9050419.html