ASP.NET 网站作为 PHP Nginx 服务器上的子文件夹

ASP.NET 网站作为 PHP Nginx 服务器上的子文件夹

我的要求:
我的网站 -> 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 支持以您需要的方式在子文件夹中单独运行。更多信息请点击此处

相关内容