2016-04-08 4 views
0

私がhttpsにすべてのHTTPと異なるポートを使用してHTTPする唯一のいくつかのパスを持つようにしたい::HTTP、HTTPSへと異なるポートでHTTPへの唯一のいくつかのパス

server { 
    listen 80; 
    servername _; 
    return 301 https://$host$requesturi; 

    location /bamboo { 
    rewrite ^/bamboo(.*)$ http://mydomainname:8085/$1 last; 
    } 

    location /api { 
    rewrite ^/api(.*)$ http://mydomainname:8080/$1 last; 
    } 

    return 403; 
} 

上記動作しません、 また、これは動作しません:

#Redirect paths 
server { 
listen 443; 
server_name _; 

    location /bamboo { 
    rewrite ^/bamboo(.*)$ http://mydomainname:8085/$1 last; 
    } 

    location /api { 
    rewrite ^/api(.*)$ http://mydomainname:8080/$1 last; 
    } 

    return 403; 
} 

#Redirect http -> https 
server { 
    listen 80; 
    servername _; 
    return 301 https://$host$requesturi; 

    return 403; 
} 

これらの2つのパスを除いて、すべてのHTTPをhttpsに送信する別の方法がありますか?

答えて

1

nginxの宣言的性質を利用して、httpサーバ上のすべてのトラフィックをルーティングします。最も具体的な位置が選択される。

server { 
    listen 80 default_server; 
    server_name _; 

    location/{ 
     return 301 https://$host$request_uri; 
    } 

    location /bamboo/ { 
     proxy_pass http://mydomainname:8085/; 
    } 

    location /api/ { 
     proxy_pass http://mydomainname:8080/; 
    } 
} 

注末尾/ポート8085および8080のためのproxy_pass引数ではproxy_pass docsに記載されているように竹とAPI部分がURIから削除されます。

関連する問題