2016-09-30 7 views
2

좋은 기회를 제공하지만 온라인에서 발견 된 모든 문서가 특정 유스 케이스와 관련이 있으므로 이전의 nginx.conf 경험이없는 사람에게는 정말 고통 스럽습니다!Dokku의 nginx.conf에서 HTTPS 리다이렉트 사용 안 함

나는 아래와 같이 nginx.conf 템플릿을 사용하여 Dokku의 Ruby on Rails 서버를 보유하고 있습니다. 현재이 작업은 https : //를 자동으로 사용하도록 http : // 요청을 리디렉션합니다. 비록 리다이렉트없이 http : //에서도 작동 할 필요가있다.

server { 
    listen  [::]:80; 
    listen  80; 
    server_name getbeambox.com yourhotspot.net www.getbeambox.com; 
    access_log /var/log/nginx/beambox-access.log; 
    error_log /var/log/nginx/beambox-error.log; 

    return 301 https://$host:443$request_uri; 

} 
server { 
    listen  [::]:443 ssl spdy; 
    listen  443 ssl spdy; 
    server_name getbeambox.com yourhotspot.net www.getbeambox.com; 
    server_name getbeambox.com yourhotspot.net www.getbeambox.com; 
    access_log /var/log/nginx/beambox-access.log; 
    error_log /var/log/nginx/beambox-error.log; 

    ssl_certificate  /home/dokku/beambox/tls/server.crt; 
    ssl_certificate_key /home/dokku/beambox/tls/server.key; 

    keepalive_timeout 70; 
    add_header   Alternate-Protocol 443:npn-spdy/2; 

    location /{ 

    gzip on; 
    gzip_min_length 1100; 
    gzip_buffers 4 32k; 
    gzip_types text/css text/javascript text/xml text/plain text/x-component application/javascript application/x-javascript application/json application/xml application/rss+xm$ 
    gzip_vary on; 
    gzip_comp_level 6; 

    proxy_pass http://beambox-5000; 
    proxy_http_version 1.1; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
    proxy_set_header Host $http_host; 
    proxy_set_header X-Forwarded-Proto $scheme; 
    proxy_set_header X-Forwarded-For $remote_addr; 
    proxy_set_header X-Forwarded-Port $server_port; 
    proxy_set_header X-Request-Start $msec; 
    } 
    include /home/dokku/beambox/nginx.conf.d/*.conf; 
} 

upstream beambox-5000 { 

    server 172.17.0.3:5000; 
} 

누구나 올바른 방향으로 나를 가리킬 수 있습니까? 내가 정말로 붙어 있지 않은지 물어 보지 않겠다.

+0

단일 'server' 블록에서'http' 및'https'를 제공 할 수 있습니다. 자세한 내용은 [이 문서] (http://nginx.org/en/docs/http/configuring_https_servers.html)를 참조하십시오. –

답변

0

This은 매우 명확하지 않지만 찾고있는 문서이다.

먼저해야 할 일은 nginx.config.sigil이라는 앱 저장소의 루트에 파일을 만들고 커밋해야합니다. 그런 다음 this file의 내용을 복사 한 다음 필요한 사항을 조정합니다.

나는 nginx에도 익숙하지만 리디렉션을하고있는 라인을 찾을 수있었습니다. 다음은 내 작업 파일의 모습입니다.

{{ range $port_map := .PROXY_PORT_MAP | split " " }} 
{{ $port_map_list := $port_map | split ":" }} 
{{ $scheme := index $port_map_list 0 }} 
{{ $listen_port := index $port_map_list 1 }} 
{{ $upstream_port := index $port_map_list 2 }} 

{{ if eq $scheme "http" }} 
server { 
    listen  [::]:{{ $listen_port }}; 
    listen  {{ $listen_port }}; 
    {{ if $.NOSSL_SERVER_NAME }}server_name {{ $.NOSSL_SERVER_NAME }}; {{ end }} 
    access_log /var/log/nginx/{{ $.APP }}-access.log; 
    error_log /var/log/nginx/{{ $.APP }}-error.log; 
    location /{ 

    gzip on; 
    gzip_min_length 1100; 
    gzip_buffers 4 32k; 
    gzip_types text/css text/javascript text/xml text/plain text/x-component application/javascript application/x-javascript application/json application/xml application/rss+xml font/truetype application/x-font-ttf font/opentype application/vnd.ms-fontobject image/svg+xml; 
    gzip_vary on; 
    gzip_comp_level 6; 

    proxy_pass http://{{ $.APP }}-{{ $upstream_port }}; 
    proxy_http_version 1.1; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
    proxy_set_header Host $http_host; 
    proxy_set_header X-Forwarded-Proto $scheme; 
    proxy_set_header X-Forwarded-For $remote_addr; 
    proxy_set_header X-Forwarded-Port $server_port; 
    proxy_set_header X-Request-Start $msec; 
    } 
    include {{ $.DOKKU_ROOT }}/{{ $.APP }}/nginx.conf.d/*.conf; 
} 
{{ else if eq $scheme "https"}} 
server { 
    listen  [::]:{{ $listen_port }} ssl {{ if eq $.SPDY_SUPPORTED "true" }}spdy{{ else if eq $.HTTP2_SUPPORTED "true" }}http2{{ end }}; 
    listen  {{ $listen_port }} ssl {{ if eq $.SPDY_SUPPORTED "true" }}spdy{{ else if eq $.HTTP2_SUPPORTED "true" }}http2{{ end }}; 
    {{ if $.SSL_SERVER_NAME }}server_name {{ $.SSL_SERVER_NAME }}; {{ end }} 
    {{ if $.NOSSL_SERVER_NAME }}server_name {{ $.NOSSL_SERVER_NAME }}; {{ end }} 
    access_log /var/log/nginx/{{ $.APP }}-access.log; 
    error_log /var/log/nginx/{{ $.APP }}-error.log; 

    ssl_certificate  {{ $.APP_SSL_PATH }}/server.crt; 
    ssl_certificate_key {{ $.APP_SSL_PATH }}/server.key; 
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2; 

    keepalive_timeout 70; 
    {{ if eq $.SPDY_SUPPORTED "true" }}add_header   Alternate-Protocol {{ $.NGINX_SSL_PORT }}:npn-spdy/2;{{ end }} 

    location /{ 

    gzip on; 
    gzip_min_length 1100; 
    gzip_buffers 4 32k; 
    gzip_types text/css text/javascript text/xml text/plain text/x-component application/javascript application/x-javascript application/json application/xml application/rss+xml font/truetype application/x-font-ttf font/opentype application/vnd.ms-fontobject image/svg+xml; 
    gzip_vary on; 
    gzip_comp_level 6; 

    proxy_pass http://{{ $.APP }}-{{ $upstream_port }}; 
    proxy_http_version 1.1; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
    proxy_set_header Host $http_host; 
    proxy_set_header X-Forwarded-Proto $scheme; 
    proxy_set_header X-Forwarded-For $remote_addr; 
    proxy_set_header X-Forwarded-Port $server_port; 
    proxy_set_header X-Request-Start $msec; 
    } 
    include {{ $.DOKKU_ROOT }}/{{ $.APP }}/nginx.conf.d/*.conf; 
} 
{{ end }}{{ end }} 

{{ if $.DOKKU_APP_LISTENERS }} 
{{ range $upstream_port := $.PROXY_UPSTREAM_PORTS | split " " }} 
upstream {{ $.APP }}-{{ $upstream_port }} { 
{{ range $listeners := $.DOKKU_APP_LISTENERS | split " " }} 
{{ $listener_list := $listeners | split ":" }} 
{{ $listener_ip := index $listener_list 0 }} 
{{ $listener_port := index $listener_list 1 }} 
    server {{ $listener_ip }}:{{ $upstream_port }};{{ end }} 
} 
{{ end }}{{ end }}