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