在前一篇文章 中我介绍了如何在VPS上搭建Nginx环境和简单的Server Block设置,这一篇我来介绍一下如何在主域名安装Wordpress。
这一篇我可以偷下懒,因为我是完全按照下面这篇文章安装成功的。
How to Install WordPress with PHP 7.1 and Nginx on Debian 9
一步步按照上文来设置应该就可以成功安装,本文会着重探讨server block的设置以及SSL证书的使用。
SSL installation and Server block configuration 对于一个服务器host几个网站(包括子网站)来说,一般都是在各自的Server Block里设置该网站使用的SSL证书。直接在其Server Block指向其证书即可,我这里参考了Mozilla的SSL Configuration Generator 来生成Server block
1 nano /etc/nginx/site-available/aufomm.com
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 server { listen 443 ssl http2; server_name aufomm.com; root /var/www/html/aufomm.com; index index.php index.html; ssl_certificate /etc/ssl/www.aufomm.com.crt; ssl_certificate_key /etc/ssl/www.aufomm.com.key; ssl_protocols TLSv1.2 ; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256' ; ssl_prefer_server_ciphers on ; }
由于我使用的是Multidomain的SSL证书而且我要secure的网站都在同一个服务器上,所以我不需要在每一个Server Block专门设置证书。我只需要在Nginx Config的文件里面设置整个服务器指向证书文件即可。
1 nano /etc/nginx/nginx.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 http { .... ssl_certificate /etc/ssl/www_aufomm_com.pem; ssl_certificate_key /etc/ssl/www_aufomm_com.pkey; ssl_protocols TLSv1.2 ; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256' ; ssl_prefer_server_ciphers on ; .... }
Direct connections to HTTPS and non-www to www 这个步骤说白了就是强制所有base domain的流量到www并且所有的链接都通过HTTPS的链接来连接。假设上一步我们已经在nginx.cong里面已经设置好了SSL证书。理论来说我们接下来只需要修改basedomain的Server block即可。
以下就是我最后的Server Block
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 server { listen 80 ; server_name aufomm.com; return 301 https://www.aufomm.com$request_uri; } server { listen 443 ssl http2; server_name www.aufomm.com; root /var/www/html/aufomm.com; index index.php index.html index.htm; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { try_files $uri $uri/ /index.php?q=$uri&$args; } location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ { access_log off ; expires max; } location ~ /\.ht { deny all; } location ~ \.php$ { fastcgi_index index.php; fastcgi_keep_conn on ; include /etc/nginx/fastcgi_params; fastcgi_pass unix:/run/php/php7.1-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
本来以为这一步之后应该可以完美解决问题,但是我遇到的情况是SSL设置没问题,但是blog的地址确不会跳转到www。后来发现在Wordpress里面需要设置博客地址这个才会生效。
一开始这里默认是basedomain和http,我把他改成https和www的形式之后,搭配上面的Server block设定,就达到了我想要的效果。