2014-11-13 2 views
0

Я пытаюсь переписать http://localhost в https://localhostRewrite HTTP в HTTPS на Nginx

Я прочитал какой-то ответ об этом, и он работает, когда я пытаюсь его на моем локальном сервере. я это делаю с этими линиями:

server { 
    listen 80; 

    rewrite ^(.*) https://$server_name$request_uri permanent; 
    [...] 
} 

Но когда я пришел из другого компьютера с IP, как это: xxx.xxx.xxx.xxx:8086 он перенаправляет меня на https://localhost, и я не хочу этого.

Итак, я стараюсь, как это:

server { 
    listen 80; 

    rewrite ^(.*) https://$server_name$request_uri permanent; 
    [...] 
} 

Еще одна проблема: он перенаправляет меня на https://xxx.xxx.xxx.xxx без моего: 8086! Это не то, что я хочу ...

У кого-нибудь есть решение для меня?

Большое спасибо!

Maxime.

Edit:

Мой конфиг:

server { 


    listen 80; 


    #rewrite ^(.*) https://$host:8086$request_uri permanent; 

    root /var/www; 
    rewrite^https://$server_name$request_uri permanent; 
    index index.php index.html index.htm; 

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

    location ~ \.php$ { 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass unix:/var/run/php5-fpm.sock; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME /var/www/$fastcgi_script_name; 
     include fastcgi_params; 
    } 
} 

server { 


    listen 443 ssl; 
    server_name localhost; 

    ssl on; 
    ssl_certificate  ./cert.crt; 
    ssl_certificate_key ./cert.key; 

    ssl_session_cache shared:SSL:1m; 
    ssl_session_timeout 5m; 

    ssl_ciphers HIGH:!aNULL:!MD5; 
    ssl_prefer_server_ciphers on; 

    root /var/www; 
    index index.php index.html index.htm; 

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

    location ~ \.php$ { 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass unix:/var/run/php5-fpm.sock; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME /var/www/$fastcgi_script_name; 
     include fastcgi_params; 
    } 
} 

В конфигурации моего Rooter, в переназначение порта для этого сервера 8086.

ответ

0

Вы не можете перенаправить HTTP на HTTPS на тот же порт , Они должны слушать разные порты, или вы просто получите цикл перезаписи.

Так, например:

server { 
    listen 80; 
    server_name example.com; 
    root /nowhere; # this doesn't have to be a valid path since we are redirecting, you don't have to change it. 
    rewrite^https://$server_name$request_uri permanent; 
} 

server { 
    listen 443 ssl; 
    server_name example.com; 
    root /some/valid/directory; 

    ssl on; 
} 

Edit для полной конфигурации:

Просто чтобы уточнить, что вы хотите:

 World 
      | 
      | 
http://localhost:8086 
      | 
      | 
https://localhost:8086 
      | 
      | 
https://localhost:443 

Вам нужно будет использовать proxy_pass для это. Также код Nginx ошибка 497 может помочь: http://nginx.org/en/docs/http/ngx_http_ssl_module.html#errors

Добавьте следующую директиву сервера в конфигурации ...

server { 
    listen 8086 ssl; 
    ssl on; 
    ssl_certificate  ./cert.crt; 
    ssl_certificate_key ./cert.key; 

    ssl_session_cache shared:SSL:1m; 
    ssl_session_timeout 5m; 

    ssl_ciphers HIGH:!aNULL:!MD5; 
    ssl_prefer_server_ciphers on; 

    error_page 497 https://$host:$server_port$request_uri; 
    location/{ 
     proxy_pass https://localhost:443; 
     proxy_redirect off; 
     proxy_set_header Host $host:$server_port; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header X-Forwarded-Ssl on; 
    } 
} 
+0

Я уже делают это. Но это перенаправляет меня неправильно:/the: 8086 не здесь снова! – Maxouhell

+0

@maxouhell,: 8086 не следует перенаправлять вообще. Только порт 80 ... Можете ли вы скопировать и вставить из своего конфига? – Si289

+0

Я делал это на своем первом посте. Спасибо за вашу помощь :) – Maxouhell

Смежные вопросы