背景
之前一直使用Apache做静态资源私服及反向代理, 配置稍显复杂, 今天使用nginx来替换Apache, 在此小记一下探索的过程及碰到的问题.
安装
本人使用Mac系统, 偷懒的使用了homebrew, 一键完成了安装. 对于其它OS
使用解压zip
的方式.
下面从安装–>配置(静态资源私服 php 反向代理)–>问题展开吧
安装Homebrew
1 | ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" |
安装Nginx
安装
1 | brew install nginx |
启动
1 | sudo nginx |
停止
1 | sudo nginx -s stop |
配置
文件目录
nginx安装文件目录
1 | /usr/local/Cellar/nginx |
nginx配置文件目录
1 | /usr/local/etc/nginx |
系统hosts位置
1 | /private/etc/hosts |
配置nginx
使用多个配置来管理nginx下的多个websites
1 | cd /usr/local/etc/nginx |
在nginx.conf中进行修改, 大致配置可如下, 详细配置见官方文档
1 | user your_username staff; |
注意修改该配置中的your_username
为你的Mac用户名.
到此父级配置已配置完成, 接下来配置用户希望的功能, 例如静态资源私服或反向代理.
配置自己的静态资源服务器(username.conf), 如下
1 | server { |
配置反向代理, 如下
1 | server { |
配置Php
安装php-fpm
Mac OSX 10.9的系统自带了PHP、php-fpm,省去了安装php-fpm的麻烦。 这里需要简单地修改下php-fpm的配置,否则运行php-fpm会报错。
1 | sudo cp /private/etc/php-fpm.conf.default /private/etc/php-fpm.conf |
修改php-fpm.conf文件中的error_log项,默认该项被注释掉,这里需要去注释并且修改为error_log = /usr/local/var/log/php-fpm.log。如果不修改该值,运行php-fpm的时候会提示log文件输出路径不存在的错误。
配置hosts
1 | vim /private/etc/hosts |
在末尾加入如下代码, 该域名是nginx
中server
指定的server_name
1 | # 针对静态资源私服 |
配置完毕, 在浏览器中键入http://resource.com/
可以对指定目录的文件进行浏览,下载; 键入http://app.com/resource-app
或http://app.com/actor-app
可分别进入不同的应用.
测试
在root
根目录中创建文件index.php, 内容如下,
1 | <?php phpinfo(); ?> |
启动nginx
1 | sudo nginx |
重启nginx
1 | sudo nginx -s reload |
停止nginx
1 | sudo nginx -s stop |
启动php
1 | sudo php-fpm |
在浏览器中输入http://resource.com/index.php
即可看到php的详细信息.
问题
1.键入http://resource.com/
, 服务器返回403
界面
该问题是因为访问权限不够造成, 在nginx.conf
首行配置即可,
1 | user your_username staff; |
2.目录未显示, 只显示index.html页面
该问题是指定站点(website)未启用目录浏览功能, 在指定server
的location
节点启用目录浏览功能,如下,
1 | autoindex on; |