大致步骤

一台服务器一般对应一个域名。经过简单的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;    
    }
}

发表评论

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

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据