Nginx虚拟主机配置,支持独立urlwrite 文件,php-fpm独立用户
Nginx 虚拟主机 环境配置。
最近租了台服务器,准备做一些网站。纠结apache/nginx很久,最后选定了Nginx+php-fpm。
因为可能会有几个站,为了安全,我希望每个站点直接都能尽量独立,避免互相影响。
主要实现功能:
-能够相对快捷的添加虚拟主机。
-每个虚拟主机直接相对独立,避免一个网站有漏洞,全服务器手影响
-能够方便的配置urlrewrite,还是需要reload或restart ( 谁让nginx 不支持像 .htaccess 这样吗方便的东西呢?)
-每个虚拟主机能独立配置php.ini
上面是废话,下面就是大概实现方法。
一、主要环境
CentOS 5.7, Nginx 1.06 PHP 5.2.17(php-fpm)
安装过程省略,我基本都是编译安装在 /usr/local/ 下面。
二、Web目录结构&权限
/home/$USER$/ 用户
|-- $DOMAIN$ 域名
|-- logs
| |-- access.log 访问日志
| `-- .nginx 用户Nginx,可以定义urlrewrite 即使不需要也要创建,空内容,因为 nginx 配置文件中要include~。
`-- wwwroot 用户存放web文件
`-- index.html
权限:
Home目录下的全部目录(除了用户后来创建的)都是711, 用户组和其他用户都只能进入目录,不能查看目录有什么文件。
home下的所有文件文件(除了用户后来创建的)都是644,目录所有者能读写,用户组内的和其他用户只能读。
将 umask 都设置成 0022,这样的话用户创建的目录就是 755,能访问,能读取(显示目录下的文件)。创建的文件则是644,所有者能读写,用户组的和其他用户只能读取。
三、基本实现
1.在/(也可以是其他)目录下创建vhost目录。
2.在 /vhost 目录下创建logs目录用于记录日志(php-fpm)。
3.在 /vhost 目录下对应每个虚拟主机的用户创建一个用户目录。
4.在用户目录内创建该用户的虚拟主机的目录,目录名称为主域名(比如:qq.com)。
5.再在域名目录下创建 nginx.conf 和 php-fpm.conf 。nginx.conf 会被 主的nginx.conf 包含,里面指定了web目录等配置。php-fpm.conf 是php-fpm启动时读取的配置文件,指定了执行php的用户和组,socket端口等配置。
6.在 /vhost 目录下创建 chHosts.sh,该文件用户遍历/vhost目录下存在那些虚拟主机,记录下来,写入到 /vhost/hosts 文件,以便使用。 hosts 内容大概如下:
user1/qq.com
user2/yahoo.com
user3/google.com
user3/yahoo.com
7.在 /vhost 目录下创建 php-fpm 文件,该文件用于启动每个虚拟主机的php-fpm 修改自默认的php-fpm,借助hosts的内容,读取每个主机的php-fpm配置文件启动各自的php-fpm。
8.在主 nginx 的配置文件中的 http{ } 中添加下面内容,我是删了所有的server{}的~
# VHOST
include /vhost/*/*/nginx.conf;
vhost 目录结构大致如下:
.
|-- user1
| `-- qq.com
| |-- nginx.conf
| |-- php-fpm.conf
| |-- php-fpm.pid
| `-- php-fpm.socket
|-- chHosts.sh
|-- hosts
|-- logs
| `-- user1_qq.com.log
`-- php-fpm
php-fpm.conf 文件内容大致如下:
<?xml version="1.0" ?>
<configuration>
<section name="global_options">
<value name="pid_file">/vhost/user1/qq.com/php-fpm.pid</value> <!-- 记录主进程pid -->
<value name="error_log">/vhost/logs/user1_qq.com.log</value> <!-- 记录php-fpm错误日志 -->
<value name=&q
相关新闻>>
- 发表评论
-
- 最新评论 更多>>