若使用 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;    
    }
}

发表评论

邮箱地址不会被公开。 必填项已用*标注