我有一些使用 Mono 和 Nginx 在 linux 机器上运行的 https ASP MVC 2 Web 服务。
如何配置它们与ASP MVC的输出缓存功能一起使用?
using System.Web.Mvc;
namespace MvcApplication1.Controllers
{
[HandleError]
public class HomeController : Controller
{
[OutputCache(Duration=10)]
public ActionResult Index()
{
return View();
}
}
}
我想将缓存存储在运行 Web 服务的同一台机器上。
我已经尝试调整我的 nginx 配置以包含 proxy_cache 并重定向到同一台机器上的另一个端口以运行原始请求,使用了这个示例中的大部分代码。但是,我没有运气让它工作。
这是我所拥有的:
proxy_cache_path /usr/local/nginx/proxy_temp/ levels=1:2 keys_zone=cache:10m inactive=10m max_size=250M;
proxy_temp_path /usr/local/nginx/proxy_temp/tmp;
server
{
listen 443 ssl;
server_name myserver.com;
ssl_certificate /home/ubuntu/ssl/nginx_https.pem;
ssl_certificate_key /home/ubuntu/ssl/nginx_https.key;
location /
{
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass https://127.0.0.1:4430;
proxy_cache cache;
proxy_cache_valid 200 302 60m;
proxy_cache_valid 404 1m;
}
}
server
{
listen 4430 ssl;
root /var/www/mywebpage/;
ssl_certificate /home/user/ssl/https.pem;
ssl_certificate_key /home/user/ssl/https.key;
location /
{
index index.html index.htm default.aspx Default.aspx;
fastcgi_pass 127.0.0.1:9000;
include /etc/nginx/fastcgi_params;
}
}
如果我添加该行:
proxy_ignore_headers Cache-Control;
然后缓存工作,但是它开始缓存所有内容,我只希望它缓存在我的 MVC 应用程序中标记有 OutputCache 属性的方法,尽管我不确定如何正确配置 Nginx 缓存来处理它。
将 Nginx 缓存系统与在 Mono 上运行的 ASP MVC 应用程序的输出缓存属性耦合的正确方法是什么?