2016-04-21 7 views
1

ich mit der folgenden nginx conf Vorlage steckte:Nginx conf Vorlage funktioniert nicht mit dokku

# Special characters - dollar signs, spaces inside of quotes, etc. - 
# should be escaped with a single backslash or can cause deploy failures. 

server { 
    listen  [::]:80; 
    listen  80; 
    server_name $NOSSL_SERVER_NAME; 
    access_log /var/log/nginx/${APP}-access.log; 
    error_log /var/log/nginx/${APP}-error.log; 

    # set a custom header for requests 
    # add_header X-Served-By www-ec2-01; 

    location /{ 
     proxy_pass http://$APP; 
     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; 

    # Proxy download 
    location ~* ^/internal_redirect/(.*?)/(.*) { 
    # Do not allow people to mess with this location directly 
    # Only internal redirects are allowed 
    internal; 

    # Location-specific logging 
    access_log logs/internal_redirect.access.log main; 
    error_log logs/internal_redirect.error.log warn; 

    # Extract download url from the request 
    set $download_uri \$2; 
    set $download_host \$1; 

    # Compose download url 
    set $download_url http://\$download_host/\$download_uri; 

    # Set download request headers 
    proxy_set_header Host \$download_host; 
    proxy_set_header Authorization ''; 

    # The next two lines could be used if your storage 
    # backend does not support Content-Disposition 
    # headers used to specify file name browsers use 
    # when save content to the disk 
    proxy_hide_header Content-Disposition; 
    add_header Content-Disposition 'attachment; filename="\$args"'; 

    # Do not touch local disks when proxying 
    # content to clients 
    proxy_max_temp_file_size 0; 

    # Download the file and send it to client 
    proxy_pass \$download_url; 
    } 
} 

Die dokku docs mir sagen, zu entkommen '$' mit einem einzigen \, so habe ich getan.

Kann ein Nginx Wiz ein Nginx N00b sagen, was ist falsch mit der obigen Vorlage?

Dokku gibt die folgende Fehlermeldung:

remote: nginx: [emerg] unknown log format "main" in /home/dokku/everseller/nginx.conf:117 
remote: nginx: configuration file /etc/nginx/nginx.conf test failed 

Dank!

Antwort

1

Die Linie:

access_log logs/internal_redirect.access.log main; 

geht davon aus, dass es eine log_format Richtlinie ist, die ein main Format angibt. Standardmäßig bietet nginx ein combined Format.

ersetzen Entweder die obige Zeile mit:

access_log logs/internal_redirect.access.log combined; 

oder ein log_format main definieren.

Weitere Informationen finden Sie unter this document.

+0

Danke! Hat den Schnitt gemacht. Nun habe ich einen anderen Fehler: [emerg] ungültige Anzahl von Argumenten in der "set" -Direktive in /home/dokku/everseller/nginx.conf:117. Was ist ein n00b zu tun? :-) – Corstiaan

+0

@Corstiaan Sie haben einige '$ 'in Ihren' set' Direktiven. –

+0

Wir bekommen irgendwo :-). Nein, ich erhalte diesen Fehler: [emerg] ungültige Anzahl von Argumenten in der Direktive "proxy_set_header" in /home/dokku/everseller/nginx.conf:96. Welcher Anruf bei proxy_set_header ist der Täter? – Corstiaan