我在Linux上运行nginx。我想要一个.aspx
网页并输出它的html(没有<% %>
指令,导入或页面声明。)
为简单起见,假设我托管的所有.aspx
个网页都是.html文件,并使用.aspx
扩展名重命名。
当我将nginx指向index.aspx
的位置时,它会要求我下载文件而不是显示文件的html内容,而index.html
显示正常。
我想到了一些解决这个问题的方法。
application/aspx html htm shtml;
添加到我的nginx mimetype文件中,但它没有用。我提出这个问题的原因是因为我想利用现有的基于aspx的Web应用程序。这个aspx应用程序在aspx文件本身中没有任何特定于c#的代码,因此会大大减少我的工作。
答案 0 :(得分:0)
您可能需要使用fastcgi。我为php文件做了类似的事情,所以下面的例子可能需要一些调整。
在您的nginx配置文件中,您需要以下内容:
location / {
root /var/www/yourapp
index index.html index.htm default.aspx Default.aspx;
fastcgi_index Default.aspx;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
include /etc/nginx/fastcgi_params;
}
首先你会注意到我有一个套接字文件设置 - php-fmp.sock,所以如果你没有,你可以做127.0.0.1:9000之类的事情。此外,如果您还没有fastcgi_params文件,我的文件包含:
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200;
重新启动Nginx,看看会发生什么,如果遇到问题,请阅读错误和警告日志。希望这能让你开始。
答案 1 :(得分:0)
这不是最佳解决方案,但我正在开发一个cgi应用程序,它将aspx页面的REQUEST_URI
转换为open(文件).read()并将aspx页面内容输出到浏览器。
我正在开发一个SSI解析器来处理ssi调用,到目前为止它对我有用但有点乱,因为它现在只适用于我的设置,并且必须将请求重定向到我的代码库而不是.NET代码库基于文件扩展名,这是一个糟糕的解决方案。
最终,创建一个nginx模块来处理aspx,因为它会html并将ssi卸载到nginx模块,这将是最好的解决方案。
感谢所有提供意见的人,我知道这个问题肯定在左边的领域。 欢呼声。