2017-05-12 8 views
0

Was in meinem Nginx eingestellt ist, wird es meine NodeJS App dienen, wenn die URL in Desktop eingegeben wird und meine VueJS App, wenn es in Mobile ist .. Unerwarteterweise wurde es eine Anforderung, dass unsere Desktop NodeJS App kann auch im mobilen umgekehrt gezeigt werden. Meine Nginx-Konfiguration funktioniert gut, aber was mich nervt ist, wenn ich von Handy zu Desktop umschalte, wird es nicht sofort die Seite auf den Desktop wechseln. Aber Sie müssen aktualisieren, bevor es gerendert wird. Ich weiß nicht, warum ...Nginx Seite Rendering Verhalten

Beachten:

Dass, wenn vom Desktop bis zum mobilen Schalt es recht gut funktioniert

muss es etwas, das ich nicht verstehe, in Nginx

Hier ist meine nginx conf:

map $http_user_agent $is_desktop { 
    default 0; 
    ~*linux.*android|windows\s+(?:ce|phone) 0; # exceptions to the rule 
    ~*spider|crawl|slurp|bot 1; # bots 
    ~*windows|linux|os\s+x\s*[\d\._]+|solaris|bsd 1; # OSes 
} 

map $is_desktop $is_mobile { 
    1 0; 
    0 1; 
} 

server { 
    return 404; 
} 


server { 

    listen 80; 
    server_name example.com; 
    port_in_redirect off; 
    charset utf-8; 
    if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") { 
     set $year $1; 
     set $month $2; 
     set $day $3; 
    } 
    access_log /usr/logs/nginx/lion/lion.$year-$month-$day.log; 

    location/{ 
     index index.html; 
     if ($arg_desktop = 1){ 
      add_header Set-Cookie desktop=1; 
      return 302 $scheme://example.com; 
     } 
     if ($arg_desktop = 0){ 
      add_header Set-Cookie desktop=0; 
      return 302 $scheme://example.com; 
     } 
     if ($cookie_desktop = 0){ 
      root /usr/src/lion; 
     } 
     if ($is_mobile) { 
      root /usr/src/lion; 
     } 
     if ($cookie_desktop = 1){ 
      proxy_pass http://marty:3000; 
     } 
     if ($is_desktop) { 
      proxy_pass http://marty:3000; 
     } 
     error_page 404 =302 /; 
    } 

    location /dist { 
     alias /usr/src/marty/dist; 
     access_log off; 
    } 

    location /img { 
     if ($is_desktop) { 
      root /usr/src/marty/dist; 
      access_log off; 
     } 
    } 

    error_page 405  =200 $uri; 
} 

server { 
    listen 80; 
    server_name www.example.com; 
    return 301 $scheme://example.com$request_uri; 
} 
+0

Wenn die URL die gleiche ist und nur der Cookie ist anders, der Client wahrscheinlich denkt, dass die Seiten identisch sind. Ich glaube nicht, dass dies ein 'nginx' Problem ist. –

+0

Ich habe es gerade gelöst, indem ich einen Antwort-Header hinzugefügt habe. Es ist ein Cache-Seiten-Problem –

Antwort

0

I gerade die Antwort gelöst, indem man eine add_header Cache-Control "no-cache"; hinzufügt. Es ist ein Cacheseite Problem, so am Ende ist mein Code:

if ($arg_desktop = 1){ 
    add_header Set-Cookie desktop=1; 
    return 302 $scheme://example.com; 
} 
if ($arg_desktop = 0){ 
    add_header Set-Cookie desktop=0; 
    return 302 $scheme://example.com; 
} 
if ($cookie_desktop = 0){ 
    add_header Cache-Control "no-cache"; 
    root /usr/src/lion; 
} 
if ($is_mobile) { 
    add_header Cache-Control "no-cache"; 
    root /usr/src/lion; 
} 
if ($cookie_desktop = 1){ 
    proxy_pass http://marty:3000; 
} 
if ($is_desktop) { 
    proxy_pass http://marty:3000; 
} 
Verwandte Themen