深入学习Nginx (4) 完整配置案例

深入学习Nginx (4) 完整配置案例

Scroll Down

nginx 中间的具体模块介绍真的太多,请移步 nginx中文文档网站

写在nginx.conf的配置文件中

两个虚拟主机(纯静态-html 支持)

http {
  server {
  listen          80;
  server_name     www.domain1.com;
  access_log      logs/domain1.access.log main;
  location / {
  index index.html;
  root  /var/www/domain1.com/htdocs;
  }
  }
  server {
  listen          80;
  server_name     www.domain2.com;
  access_log      logs/domain2.access.log main;
  location / {
  index index.html;
  root  /var/www/domain2.com/htdocs;
  }
  }
}

访问 网址 www.domain1.com 重定向静态资源路径为 /var/www/domain1.com/htdocs/index.html

访问 网址 www.domain2.com 重定向静态资源路径为 /var/www/domain2.com/htdocs/index.html

虚拟主机标准配置(简化)

http {
  server {
  listen          80 default;
  server_name     _ *;
  access_log      logs/default.access.log main;
  location / {
  index index.html;
  root  /var/www/default/htdocs;
  }
  }
}

在父文件夹中建立子文件夹以指向子域名

这是一个添加子域名(或是当DNS已指向服务器时添加一个新域名)的简单方法。需要注意的是,我已经将FCGI配置进该文件了。如果你只想使服务器为静态文件服务,可以直接将FCGI配置信息注释掉,然后将默认主页文件变成index.html。

这个简单的方法比起为每一个域名建立一个 vhost.conf 配置文件来讲,只需要在现有的配置文件中增加如下内容:

server {
  # Replace this port with the right one for your requirements
  # 根据你的需求改变此端口
  listen       80;  #也可以是1.2.3.4:80的形式
  # 多个主机名可以用空格隔开,当然这个信息也是需要按照你的需求而改变的。
  server_name  star.yourdomain.com www.*.yourdomain.com;

  #或者可以使用:_ * (具体内容参见本维基其他页面)
  root /PATH/TO/WEBROOT/$host;
  error_page  404              http://yourdomain.com/errors/404.html;
  access_log  logs/star.yourdomain.com.access.log;

  location / {
  root   /PATH/TO/WEBROOT/$host/;
  index  index.php;
  }

  # 直接支持静态文件 (从配置上看来不是直接支持啊)
  location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html)$ {
  access_log        off;
  expires           30d;
  }

  location ~ .php$ {
  # 如果需要,你可以为不同的FCGI进程设置不同的服务信息
  fastcgi_pass   127.0.0.1:YOURFCGIPORTHERE;
  fastcgi_index  index.php;

  fastcgi_param  SCRIPT_FILENAME  /PATH/TO/WEBROOT/$host/$fastcgi_script_name;
  fastcgi_param  QUERY_STRING     $query_string;
  fastcgi_param  REQUEST_METHOD   $request_method;
  fastcgi_param  CONTENT_TYPE     $content_type;
  fastcgi_param  CONTENT_LENGTH   $content_length;
  fastcgi_intercept_errors on;
  }

  location ~ /\.ht {
  deny  all;
  }
  }

配置灵活多变