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时遇到的一些问题和解答方案。以后在自己的服务器上玩耍时遇到的问题还会继续记录。

转载于:https://www.cnblogs.com/georgeyang/p/9050419.html

你可能感兴趣的:(CentOS上搭建Nginx+HTTPS个人服务器)