2013-10-26 19 views
2

Firefox - единственный браузер, с которым у меня возникают проблемы. Я нашел похожие проблемы, но никакие решения не работают.Firefox перенаправление Nginx rewrite

Когда я посещаю http://example.com nginx переписывает его как http://www.example.com. Я сделал это, потому что сайт использовал ssl sitewide, где теперь это осталось на начальном сервере с использованием субдомена, так что https://subdomain.example.com. Поисковые системы, старые закладки и другие старые ссылки пытались довести пользователя до https://example.com.

Во всех браузерах это работает как шарм, за исключением firefox.

Проблема: Firefox принимает запрос пользователей http://example.com и направляет их в https://subdomain.example.com.

А затем из ссылки поисковой системы, которая читает https://example.com, возникает ошибка SSL, потому что она пытается прочитать файл subomain.example.

Я смущаюсь, и теперь это 430 утра. У кого-то есть какие-то подсказки?

Вот мой Nginx конф:

upstream thin_server { 
    server 0.0.0.0:8080 fail_timeout=0; 
    } 

server { 
listen 80 default; 
listen 443 ssl; 
ssl off; 
root /home/example/public; 
server_name example.com www.example.com; 
ssl_certificate /etc/nginx/ssl/www.example.com.chained.crt; 
ssl_certificate_key /etc/nginx/ssl/example.key; 
index index.htm index.html; 

if ($host = 'example.com') { 
    rewrite ^/(.*)$ http://www.example.com/$1; 
} 

location/{ 
    try_files $uri/index.html $uri.html $uri @app; 
} 

location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mp3|flv|mpeg|avi)$ { 
     try_files $uri @app; 
    } 

location @app { 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_redirect off; 
    proxy_pass http://thin_server; 
} 

error_page 500 502 503 504 /500.html; 
client_max_body_size 4G; 
keepalive_timeout 10; 
} 

UPDATE Только начал работать случайно пару дней спустя

+1

Это может быть проблемой кэша попробовать Ctrl + Shift + Delete и выберите кэш только и пометить его, чтобы удалить все кэш –

+0

Эй, @Mohammad, да, у меня была новая установка браузера, и я постоянно очищал все пользовательские данные при тестировании. – nil

ответ

1

У меня была аналогичная проблема, Chrome работает нормально, IE и Firefox не работает с перенаправлением http на https. Я искал день, строил различные конфигурации, но ничего не помогал.

Случайно я проверил свой брандмауэр (состояние ufw) и понял, что порт 80 не был открыт, только 443.
После разрешения порта 80 он работал.

Вот мой Nginx конфигурации, который работает (я знаю, что он не оптимизирован)

# Redirect http to https 
server { 
    listen 80 default_server; 
    listen [::]:80 default_server; 
    server_name domain.tl www.domain.tl *.domain.tl;  
    return 301 https://www.domain.tl$request_uri; 
} 

#HTTPS config for SSL with certificate 
server { 
    listen 443 ssl; 
    listen [::]:443 ssl;  
    server_name www.domain.tl www.domain.tl; 

#Limited Cipers to avoid MD5 etc attacks 
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; 
    ssl_prefer_server_ciphers on; 
    ssl_session_cache shared:SSL:10m; 

#Limit to TLSv1.2 for security 
    ssl_protocols TLSv1.2; 

#Chained certificate to make sure the intermediate is in 
    ssl_certificate /etc/nginx/ssl/certificate.chain.crt; 
    ssl_certificate_key /etc/nginx/ssl/certificat_key.key; 

#PHP, Wordpress etc config 
    root /var/www/html; 
    index index.php index.html index.htm; 

    # unless the request is for a valid file, send to bootstrap 

    location/{ 
     # First attempt to serve request as file, then 
     # as directory, then fall back to displaying a 404. 
     #try_files $uri $uri/ =404; 
     #Rewrite rule fuer Wordpress 
    try_files $uri $uri/ /index.php?$args; 
    } 

# PHP7 specific 
    location ~ \.php$ { 
     try_files $uri =404; 
     #fastcgi_pass 127.0.0.1:9000; 
     # With php5-fpm: 
     #fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     include fastcgi_params; 
    } 

    # OLD CONFIG for php5 
    # location ~ \.php$ { 
    # try_files $uri =404; 
    # fastcgi_split_path_info ^(.+\.php)(/.+)$; 
    # fastcgi_pass unix:/var/run/php5-fpm.sock; 
    # fastcgi_index index.php; 
    # include fastcgi_params; 
    #} 
}