2016-09-11 2 views
0

Ich bin ein neuer in Nginx, mein Ziel ist, dass:Nginx Reverse-Proxy mit 301-Weiterleitung unter https

wenn ich 127.0.0.1:8080/proxy/git/ oder Https://127.0.0.1/proxy/git/ besuchen, die Nginx (rückwärts) Proxy es https://github.com

machen Mein nginx conf ist Schlag:

http { 

    server { 
    listen 8080 default backlog=2048; 
    listen 443 ssl; 

    server_name 127.0.0.1; 

    ssl_certificate /etc/nginx/xxxxxxx.crt; 
    ssl_certificate_key /etc/nginx/xxxxxxx.key; 

    location /proxy/git/ { 
     proxy_pass https://github.com/; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_pass_header Server; 
     proxy_redirect off; 

     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Scheme $scheme; 

     } 
     error_page 500 502 503 504 /50x.html; 
    } 

    ## 
    # Basic Settings 
    ## 

    sendfile on; 
    tcp_nopush on; 
    tcp_nodelay on; 
    keepalive_timeout 65; 
    types_hash_max_size 2048; 
    # server_tokens off; 

    # server_names_hash_bucket_size 64; 
    # server_name_in_redirect off; 

wenn ich eingeben oder in meiner chrome-Adressleiste, ich habe eine 301-Weiterleitung und die Adresse wurde, was ich denke, es ist ein direkter Besuch wurde, aber ich mag einen Proxy-Besuch, hier ist ein Bild:

enter image description here

Allerdings, wenn ich auf einen http & statische Website umleiten, es ist OK.

ich viel von der Website gesucht haben, sagt jemand es ist, weil proxy_redirect, ich es proxy_redirect//; getestet haben oder es löschen, und die proxy_set_header Host $host; in proxy_set_header Host $http_host; ändern, aber alles keinen Sinn machen.

speziell, wenn ich die proxy_redirect Linie sowohl löschen und $host wie unten an $http_hosts, ändern:

 proxy_pass https://github.com/; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_pass_header Server; 
     #proxy_redirect default; 

     proxy_set_header Host $http_host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Scheme $scheme; 

es scheint, dass es beteewn mich 301 und mich tun ???

enter image description here

Also, meine Frage ist:

  1. Kann mir jemand sagen, wie kann ich Reverse-Proxy unter 127.0.0.1 auf GitHub? (Stellen Sie sich vor, ich bin an einem Ort, wo diese Art Reverse-Proxy verwenden muss)

  2. Es ist sehr nett von Ihnen, wenn Sie einfache Wörter verwenden können, um zu erklären, warum wir das tun sollten, möchte ich auch den Grund wissen.

  3. Mein Englisch ist sehr schlecht, so, um es klar zu machen, können wir Github die „Zielserver“ oder „Ziel-Website“, und rufen Sie 127.0.0.1 „Proxy-Server“ oder „nginx“ nennen

Danke herzlich für jeden, der mir helfen will!

Antwort

1

Ich habe den Grund gefunden.

Github benötigt Https und HOST: github.com

die proxy_set_header Host $http_host; können Sie diesen Host-Header nicht helfen zu ändern, sollte proxy_set_header Host $proxy_host; stattdessen verwenden. Dies ändert den Host-Header zu Github.

Verwandte Themen