假设有两个域名,分别是:www.websiteA.com和www.websiteB.com。
1、创建站点配置文件
复制代码代码示例:
server {
listen 80; #监听的端口号 server_name websiteA.com; #域名 #access_log logs/host.access.log main; location / { root X:/wnmp/www/websiteA; #站点的路径 index default.php index.php index.html index.htm; #站点的rewrite在这里写 rewrite ^/(\w+)\.html$ /$1.php; rewrite ^/(\w+)/(\w+)$ /$1/$2.php; } #错误页的配置 error_page 404 /error.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php$ { root X:/wnmp/www/websiteA; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } }
做好站点A的配置,接下来做websiteB的配置,文件名为:vhosts_modoupi_websiteB.conf。
复制代码代码示例:
server {
listen 80; #监听的端口号 server_name websiteB.com; #域名 #access_log logs/host.access.log main; location / { root X:/wnmp/www/websiteB; #站点的路径 index default.php index.php index.html index.htm; #站点的rewrite rewrite ^/(\w+)\.html$ /$1.php; rewrite ^/(\w+)/(\w+)$ /$1/$2.php; } #错误页的配置 error_page 404 /error.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php$ { root X:/wnmp/www/websiteB; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } } 完成二个站点的配置。
2、在nginx的主配置文件里,包含这两个站点的配置文件。
复制代码代码示例:
include X:/wnmp/nginx/conf/vhosts_conf/*.conf;
nginx的多站点配置完成。 方法二 当有了一个 VPS 主机以后,为了不浪费 VPS 的强大资源(相比共享主机1000多个站点挤在一台机器上),往往有想让 VPS 做点什么的想法,银子不能白花啊:)。放置多个网站或者博客是个不错的想法,可是如何配置 web 服务器才能在一个 VPS 上放置多个网站/博客呢?如何通过一个 IP 访问多个站点/域名呢?这就是大多数 web 服务器支持的 virtual hosting 功能。
这里以配置2个站点(2个域名)为例,n 个站点可以相应增加调整,假设:
1、在 /etc/nginx 下创建 vhosts 目录
复制代码代码示例:
mkdir /etc/nginx/vhosts
2、在 /etc/nginx/vhosts/ 里创建一个名字为 example1.com.conf 的文件,把以下内容拷进去
复制代码代码示例:
server {
listen 80; server_name example1.com www. example1.com; access_log /www/access_ example1.log main; location / { root /www/example1.com; index index.php index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /www/example1.com/$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } }
3、/etc/nginx/vhosts/中创建名为:example2.com.conf 的文件,添加进如下的内容:
复制代码代码示例:
server {
listen 80; server_name example2.com www. example2.com; access_log /www/access_ example1.log main; location / { root /www/example2.com; index index.php index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /www/example2.com/$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } }
4、打开 /etc/nginix.conf 文件,在相应位置加入 include 把以上2个文件包含进来。
代码示例:
user nginx;
worker_processes 1; # main server error log error_log /var/log/nginx/error.log ; pid /var/run/nginx.pid; events { worker_connections 1024; } # main server config http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] $request ' '"$status" $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; gzip on; server { listen 80; server_name _; access_log /var/log/nginx/access.log main; server_name_in_redirect off; location / { root /usr/share/nginx/html; index index.html; } } # 包含所有的虚拟主机的配置文件 include /usr/local/etc/nginx/vhosts/*; } 5、重启 Nginx 方法三 一个服务器上需要跑多个网站,如果仅仅把域名解析到server的IP是不行的,访问不同域名打开的都是nginx默认的网站。要想分别对应,需要在nginx里设置vhost。
用lnmp一键安装包(http://www.lnmp.org)安装的nginx+mysql+php环境,对于其他自己编译的nginx估计配置文件和安装目录会有所不同,自己酌情修改哦,呵呵
复制代码代码示例:
server
location ~ .*\.(js|css)?$
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
然后加入vhost定义:
复制代码代码示例:
include /usr/local/nginx/vhost/*.conf;
}
再在/usr/local/nginx/建立vhost文件夹,里面创建各域名的对应配置文件。
复制代码代码示例:
server
location ~ .*\.(php|php5)?$
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
location ~ .*\.(js|css)?$
注意:如果使用一级域名,需要在server配置里指定不加www前缀的域名,否则访问jbxue.com会被定义到默认站点而非www.jbxue.com。
复制代码代码示例:
server_name www.it.net.cn;
server_name it.net.cn; 不然的话,会被一些莫名的问题搞的很头疼的。 (责任编辑:IT) |