若使用 LNMP 搭建网站基本环境,则推荐使用 LNMP 自带的解决方案。
LNMP 绑定多个域名并配置 SSL 与 Https:// 跳转 (dimojang.com)
大致步骤
一台服务器一般对应一个域名。经过简单的Nginx配置,可以让不同域名解析到不同的目录下。
首先打开Nginx配置文件目录,如不确定位置可用 whereis nginx 命令来确定路径。我使用LNMP一键安装指令,Nginx目录位于 /usr/local/nginx/conf 。然后进入 conf 目录下的 vhost 文件夹。
vhost 文件夹内可以存放 .conf 结尾的配置文件,Nginx启动的时候会全部加载。推荐命名为 域名.conf 的格式(如 blog.dimojang.com.conf ),方便后期管理。
配置文件内容包含一个 server { } 块和若干个 location { } 块。因为Nginx不能解析 .php 文件 ,因此在遇到 .php 文件 时需要向 php 解析程序 发送请求。保存配置文件后重启Nginx即可访问域名查看效果。
错误处理
保存配置文件重启后如发生错误,可以前往 error_log 指定的位置检查 .log 文件 。
如果报错找不到 php-cgi.sock ,则可以使用 whereis 命令确定自己机器上 php-cgi.sock 的位置。 发生此类型错误浏览器返回 502 Bad Gateway 。
代码
稍微一点点解释
- server_name 处填写域名,可以使用空格分隔多个域名
- root 处填写该域名欲解析到的目录
- index 处可以使用空格分隔多种文件名,如index.htm
- access_log 处填写访问日志存放目录
- error_log 处填写错误日志存放目录
server { charset utf-8; client_max_body_size 128M; listen 80; ## listen for ipv4 server_name blog.dimojang.com; root /.../blog/; index index.php; access_log /.../access.log; error_log /.../error.log; location / { # Redirect everything that isn't a real file to index.php try_files $uri $uri/ /index.php$is_args$args; } # 防止从/assets目录运行.php文件 location ~ ^/assets/.*\.php$ { deny all; } #遇到PHP文件时发送给PHP文件解析程序 location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/tmp/php-cgi.sock; try_files $uri =404; } location ~* /\. { deny all; } }