我的要求:
我的网站 -> example.com - 运行在 Nginx 服务器下运行的 PHP 构建的 Magento 电子商务平台(目前为 Apache,但很快将转向 Nginx)
另一个网站 -> example.com/abcd - abcd 目前是另一个在 ASP.NET 上运行的网站
另一个网站 -> example.com/xyz - xyz 目前是另一个在 ASP.NET 上运行的网站
我想要让 PHP 和 ASP.NET 网站共存于一台服务器上,并将 ASP.NET 网站作为子文件夹运行。
背景:
1. Magento 网站是一个电子商务网站,无法重建。
2. ASP.NET 是一个投资电子商务网站的企业网站,它也无法重建,因为他们有许多企业网站,每个网站都将作为 magento 网站的子文件夹运行。
研究:
简要查看了 mono-project。但是据我所知,您需要为 PHP 和 ASP.NET 设置单独的域和单独的文件夹才能在一台服务器上存在?还是我的理解有误?
这里有没有人能提供更多信息,告诉我是否可以这样做。如果可以,我需要研究什么方向?正如要求中提到的,我无法将任何公司网站重建为 PHP(尽管可以进行微小更改),因为它们已经完成了,而且有很多。我还知道我可以放置一个子域 http://abcd.example.com 并使其指向另一台带有 IIS 的服务器,但公司希望将其作为最后的选择。
我的背景是 PHP 开发人员,因此对 ASP.NET 了解甚少。所以请多多包涵 :)
答案1
我不太熟悉 Mono,但是查看它的 nginx 配置(nginx fastcgi 下的 Mono),应该可以使用您描述的设置通过 nginx 同时运行 PHP-FPM 和 Mono,使用如下配置:
server {
listen 80;
server_name example.com;
// PHP
location / {
index index.php;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_pass localhost:9000; // php server/port
}
// ASP.NET 1
location /abcd {
index Default.aspx;
fastcgi_index Default.aspx;
include fastcgi_params;
fastcgi_pass localhost:9001; // mono server/port
}
// ASP.NET 2
location /xyx {
index Default.aspx;
fastcgi_index Default.aspx;
include fastcgi_params;
fastcgi_pass localhost:9002; // other mono server/port
}
}
然后你必须设置不同的根对于每个位置块。
答案2
我不太熟悉如何在 nginx 中运行 Mono,而且我不想传播 FUD,但我不确定该设置是否绝对成熟。
如果可以的话,您可能需要考虑在 Windows Server 上的 IIS 中运行所有内容。IIS 对 PHP 的支持非常好IIS 支持以您需要的方式在子文件夹中单独运行。更多信息请点击此处。