Nginx路由被缓存了吗?

时间:2014-04-30 08:14:21

标签: apache http caching nginx routing

在我的VPS上我有两个虚拟服务器:1)apache应用程序(博客),2)主应用程序

博客(我们称之为app1)可以通过以下方式作为子域名进行访问:博客 .sitename.com - > APP1。 主应用程序也有语言子域访问权限,因此我定义了一个通配符访问: *.sitename.com - > APP2。

默认情况下,sitename.com会解析为app2。

直到上周四或周五,一切都很顺利(不记得确切的一天)。

问题是:blog.sitename.com开始由app2(而不是app1)解决,因此最终用户登陆了app2页面和#34;博客"被视为一种语言。

此外,我注意到在我的某些浏览器(例如Safari)中没有出现此问题。 我尝试清除其他浏览器的缓存和cookie,之后又开始工作了。

当然我无法向我的网站用户解释这个问题,那么有没有办法让缓存无效(或者不管它是什么)以便一切都能重新开始工作?

是的,我尝试在sendfile off文件中设置nginx.conf并重新启动nginx - 没有用。

upstream app2 {
   server unix:/tmp/app2.sock fail_timeout=0; 
}

server {
   server_name blog.sitename.com;

   access_log /var/log/nginx/blog.sitename.com.access.log main;   
   error_log /var/log/nginx/blog.sitename.com.error.log;

   root /var/www/app1; # Wordpress blog

   index index.php;

   location / {
      index index.php;
      try_files $uri $uri/ /index.php?q=$uri&$args;
   }

   location ~ \.php$ {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header Host $http_host;

      proxy_pass http://127.0.0.1:8081;
      proxy_redirect off;
   }

   location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
      expires max;
      log_not_found off;
   }
}

server {
   server_name sitename.com 123.123.123.123;
   rewrite ^(.*) http://www.sitename.com$1 permanent;
}

server {
   listen 80 default deferred; # for Linux
   listen 443 ssl; # Handle SSL connection

   ssl_certificate /root/ssl/ssl.crt;
   ssl_certificate_key /root/ssl/ssl.key;

   client_max_body_size 4G;
   server_name *.sitename.com;  
   root /root/app2/public; 
   keepalive_timeout 10;

   try_files $uri/index.html $uri.html $uri @app;   

   location @app {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme; # HTTP or HTTPS
      proxy_set_header Host $http_host;
      proxy_redirect off;

      proxy_pass http://app2;
   }  

   # serve static assets
   location ~ ^/(assets)/ {
      gzip_static on;
      expires 1y;
      add_header Cache-Control public;
   }

   error_page 500 502 503 504 /500.html;

   location = /500.html {
      root /root/app2/public;
   }
}

1 个答案:

答案 0 :(得分:0)

行。最后我找到了所有问题的根源!

永远不要使用 301 重定向,如果不是100%确定它应该是那样。

301重定向在浏览器级别缓存,无法清除它。 请改用302。只有当你100%确定一切正确时 - 实施301,因为它对性能有益。