你怎么得到两个networking服务器在一台机器上工作?

我想在我刚刚购买的一个VPS上托pipe五个网站。

  1. 一个名为domain.com的PHP网站
  2. 一个名为beta.domain.com的django网站
  3. phpmyadmin这将是domain.com/phpmyadmin
  4. phppgadmin,这将是beta.domain.com/phppgadmin
  5. 另一个叫做domain2.com的django网站

所有的django网站都将使用apache中的mod_wsgi来运行,所有的PHP网站都将使用fastcgi在nginx中运行。

我是一个开发人员,而不是系统pipe理员,所以我很难找出最好的方法来做到这一点。 我从nginx运行我的PHP的原因是因为我不想安装mod_php,它允许我在apache中使用worker MPM。

目前我的nginx运行在8080端口,而apache运行在80端口。当我到达domain.com时,它调出了django站点。 当我去到domain.com:8080时,它调出了PHP站点。

就像我之前说过的,我不是一个服务器的人,所以这个东西正在让我的头脑旋转。 有没有办法从nginx访问的东西没有指定的URL中的端口号?

基本上,当你放入“domain.com”时,网页浏览器实际上转到“domain.com:80”(端口80是默认的HTTP端口)。

您只能在计算机上为每个端口分配一个应用程序,因此只有一个应用程序可以侦听默认的HTTP端口(80),另一个应该使用另一个端口。

有三种方法:

1)正确的方法是使用nginx作为你的主要web服务器(即听默认的http端口80),设置Apache监听另一个端口(例如8080),然后设置一个“反向代理”(谷歌是你的朋友在这里)。 这是理想的设置。 这需要更多的努力来configuration,但有数百个真正有帮助的指南。

2)使用nginx为django网站提供服务(如果可能的话)?

3)一个简单而快捷的方法(尽pipe不推荐),假设PHP网站只适用于网站pipe理员,并且django网站不需要https,那么您可以设置PHP网站以通过HTTPS运行。 这样你可以使Apache运行在端口80(默认HTTP)和nginx运行在端口443(默认HTTPS)上。 只要把“https://”而不是“http://”,你就可以到达端口443。

国际海事组织,没有必要在两个Web服务器上运行Web应用程序。

由于我找不到一个好的,可靠的独立 fastcgi进程pipe理器,我将在Apache上运行Django和PHP应用程序,使用mod_wsgi作为Django, mod_fcgid作为PHP应用程序。 我可能会考虑在一个单独的Web服务上运行唯一的事情是静态文件 。 nginx和lighttpd都擅长服务静态文件。 通过“静态文件”,我不只是指图像,样式表或JavaScript,还包括由Web应用程序生成的静态HTML页面,作为caching机制的一部分。

关于mod_php,这是不需要的,因为您将使用mod_fcgid在fastcgi模式下运行PHP。 这也可以让你使用工人 MPM(线程)。

我希望这给你一些指示。

你最好使用apache作为后端,在端口80使用nginx代理。Nginx可以caching页面,并将特定的主机转发到apache 8080端口。

 location / { proxy_pass http://localhost:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } 

把它们放在不同的端口或IP上。 让一台服务器在127.0.0.2而不是127.0.0.1上监听,如果只是为了本地开发。

对于公共服务,我build议只使用fastcgi(fcgid,如果使用apache)。 真的不需要像wsgi这样的替代品; fastcgi非常好,而且更加灵活(例如,你可以运行python2.5和python3.1和ruby并行)。