2017-06-05 4 views
1

Mein Ziel ist es meine Web-Seite wie diese zu umleiten:Nginx Redirect von HTTP auf HTTPS teilweise arbeiten

http://EXAMPLE.com/-https://EXAMPLE.com/ (in Betrieb)

http://www.EXAMPLE.com/-https://EXAMPLE.com/ (nicht funktioniert). Dieser wird derzeit auf https://www.EXAMPLE.com/ umgeleitet.

Darüber hinaus, obwohl ich api.EXAMPLE.com im Server-Abschnitt unten nicht definiert habe, wenn ich die URL als http://api.EXAMPLE.com/ eingeben, wird es auf https://api.EXAMPLE.com/ umgeleitet. Ich glaube, das hat damit zu tun, dass der DNS-Record auf dieselbe IP-Adresse auflöst. Ich würde es lieber zeigen Seite nicht gefunden statt umleiten.

DNS-Einträge:

Type Name Value   TTL 
A  @  35.161.XX.XX 600 seconds 
A  api  35.161.XX.XX 1 Hour 
A  www  35.161.XX.XX 1 Hour 

Und die Nginx Konfigurationsdatei:

# For more information on configuration, see: 
# * Official English Documentation: http://nginx.org/en/docs/ 
# * Official Russian Documentation: http://nginx.org/ru/docs/ 

user nginx; 
worker_processes auto; 
error_log /var/log/nginx/error.log; 
pid /var/run/nginx.pid; 

# Load dynamic modules. See /usr/share/nginx/README.dynamic. 
include /usr/share/nginx/modules/*.conf; 

events { 
    worker_connections 1024; 
} 

http { 
    log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 
         '$status $body_bytes_sent "$http_referer" ' 
         '"$http_user_agent" "$http_x_forwarded_for"'; 

    access_log /var/log/nginx/access.log main; 

    sendfile   on; 
    tcp_nopush   on; 
    tcp_nodelay   on; 
    #keepalive_timeout 65; 
    keepalive_timeout 15; 

    types_hash_max_size 2048; 

    # Enable HTTPS by default on all our websites 
    #add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"; 

    #php max upload limit cannot be larger than this  
    client_max_body_size 40m; 

    include    /etc/nginx/mime.types; 
    default_type  application/octet-stream; 

    # Load modular configuration files from the /etc/nginx/conf.d directory. 
    # See http://nginx.org/en/docs/ngx_core_module.html#include 
    # for more information. 
    include /etc/nginx/conf.d/*.conf; 

    index index.php index.html index.htm; 

    # Upstream to abstract backend connection(s) for PHP. 
    upstream php { 
     #this should match value of "listen" directive in php-fpm pool 
     server unix:/tmp/php-fpm.sock; 
     #server 127.0.0.1:9000; 
    } 

    # Redirect unsecured port 80 traffic (http://) to port 443 (https://) 
    server { 
     listen  80 default_server; 
     listen  [::]:80 default_server; 
     server_name EXAMPLE.com www.EXAMPLE.com; 
    #return 301 $scheme://EXAMPLE.com$request_uri; 
     #return 301 https://$host$request_uri; 
    return 301 https://EXAMPLE.com$request_uri; 
    } 

    #server { 
    # listen  80 default_server; 
    # listen  [::]:80 default_server; 
     #server_name localhost; 
    # server_name EXAMPLE.com; 
     #root   /usr/share/nginx/html; 
    # root   /var/www/nginx; 

     # Load configuration files for the default server block. 
    # include /etc/nginx/default.d/*.conf; 

     # proxy the PHP scripts to Apache listening on 127.0.0.1:80 
     # 
     #location ~ \.php$ { 
     # proxy_pass http://127.0.0.1; 
     #} 

    #} 

    # Settings for a TLS enabled server. 
    server { 
     listen  443 ssl http2 default_server; 
     listen  [::]:443 ssl http2 default_server; 
     server_name EXAMPLE.com; 
     root   /var/www/nginx; 

    #For Basic Auth 
    auth_basic "Restricted";         
    auth_basic_user_file /var/www/nginx/.htpasswd; 

     #ssl_certificate "/etc/pki/tls/certs/EXAMPLE.crt"; 
     #ssl_certificate_key "/etc/pki/tls/private/EXAMPLE.key"; 
     ssl_certificate "/etc/letsencrypt/live/EXAMPLE.com/cert.pem"; 
     ssl_certificate_key "/etc/letsencrypt/live/EXAMPLE.com/privkey.pem"; 

     # It is *strongly* recommended to generate unique DH parameters 
     # Generate them with: openssl dhparam -out /etc/pki/nginx/dhparams.pem 2048 
     #ssl_dhparam "/etc/pki/nginx/dhparams.pem"; 
     ssl_dhparam "/etc/pki/tls/dhparams.pem"; 
     ssl_session_cache shared:SSL:1m; 
     ssl_session_timeout 10m; 
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
     ssl_ciphers HIGH:SEED:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!RSAPSK:!aDH:!aECDH:!EDH-DSS-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!SRP; 
     ssl_prefer_server_ciphers on; 

     # Load configuration files for the default server block. 
     include /etc/nginx/default.d/*.conf; 
    } 

} 
+1

Es verhält sich wie [HTTP Strict Transport Security] (https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security) in Kraft ist. Wenn Sie HSTS kürzlich deaktiviert haben, müssen Sie Ihren Browser zurücksetzen, damit er vergessen wird. –

+0

Danke Richard. Basierend auf Ihrem Lead konnte ich meine HSTS in Chrome zurücksetzen. –

Antwort

0

Basierend auf der Leitung von Richard, hier ist, wie ich die HTTP gelöscht Strict Transport Security history from Chrome :

  1. Im Bereich Abfragedomäne habe ich meine Domain und Subdomains eingegeben: example.com, www.example.com, db.example.com, api.example.com, um zu sehen, ob sie aufgelistet sind.
  2. Dann habe ich die gefunden, die ich gefunden habe, in den Abschnitt Domain löschen und drückte auf Löschen.
  3. Ich habe http://www.example.com in das Browserfeld eingegeben und Enter gedrückt. Es wurde umgeleitet auf https://example.com.
  4. Ich versuchte auch http://db.example.com und http://api.example.com und beide wurden auf https://example.com umgeleitet. Ich bin neugierig, warum diese umgeleitet wurden, da ich keinen Serverabschnitt für sie in nginx.conf hatte. Liegt es daran, dass es zur selben IP aufgelöst wurde?
  5. Schließlich versuchte ich http://what.example.com und bekam einen "Kann diese Seite nicht erreichen" Fehler; was ist richtig.

chrome: // net-internals/# HST