用nginx搞定一机多个域名

一般我们在域名上绑定机器基本都只能是80端口。而我目前有两个服务简单服务,一个是vicviz.com,也就是这个博客,基于node.js。另一个是isoftpark.com,是因为在西二旗工作,工作中没有论坛,所以用discuz简单搭建了一个论坛,基于php。这两个域名都是在阿里云上购买和备案的。都只能使用80端口。

所以我现在要做的事就是就是在用户访问不同域名时,进入的页面是不一样的,虽然服务都在一台机器上。

1. node.js服务

假设是111.111.111.111:8000, 测试一下111.111.111.111:8000是否可以访问node.js服务了

2. php服务

discuz文件目录放在/var/wwww

修改:/etc/apache2/ports.conf中的这一行:Listen 9000

修改:/etc/apache2/sites-available/000-default.conf中的这一行:DocumentRoot /var/www/ 注意一下

测试一下111.111.111.111:9000是否可以访问论坛服务了。

3. nginx

注意一下: sites-available以及sites-enabled中不要放文件,就直接放在conf.d中好了。

加入两个文件:

site1.conf:


server {
   listen 80;
   server_name isoftpark.com;

   location / {
      root /var/www;
      index index.php forum.php index.html;
   }

   # 动态文件.php请求转发给后端Apache
   location ~ \.php$ {
      # 传递真实IP到后端
      proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

      proxy_pass   http://127.0.0.1:9000;
   }

   location @proxy {
      proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

      proxy_pass http://127.0.0.1:9000;
   }
}

site2.conf:


server {
        listen          80;
        server_name     www.vicviz.com vicviz.com;
        location / {
                proxy_pass http://111.111.111:8000;
        }
}

搞定,就是这么简单,配置后记得重启哈,否则不生效。

comments powered by Disqus