Page 1 of 1

nginx proxi vor Rails/Puma

Posted: 2019-09-03 16:16
by Herbie
Hallo,

ich bastele nun schon 12 Stunden an meiner nginx config und es will einfach nicht funktionieren.

Wenn ich im Browser die url mit https eingebe, komme ich auf den Server, wenn ich es ohne mache, lande ich auf der nginx default page.

Hat jemand nen Hinweis für mich?

Code: Select all

upstream initiative {
  server unix:///var/run/initiative.sock;
}

server {
    listen 80 default;
    listen [::]:80 default;
      return 307 https://$host$request_uri;
}

server {
  listen 443;
  ssl on;

  ssl_certificate     /etc/nginx/cert_mainkaichaos/public.crt;
  ssl_certificate_key /etc/nginx/cert_mainkaichaos/ssl.key;

  server_name  mainkaichaos.de www.mainkaichaos.de ;    # change to match your URL
  root   /home/www/mainkaichaos/public/;     # I assume your app is located at that location

  if ($scheme != "https") {
    rewrite ^ https://$host$uri permanent;
}

  location / {
    proxy_pass http://initiative; # match the name of upstream directive which is defined above
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Ssl on;
  }

 }

Re: nginx proxi vor Rails/Puma

Posted: 2019-09-04 09:38
by Hamsta
Guten Morgen erstmal,

mein Kaffee-Level ist noch nicht so hoch das ich mir 100% sicher bin, aber kann es sein (erschießt mich wenn ich falsch liege), dass dein Port 80 nicht auf den Namen mainkaichaos.de bzw. www.mainkaichaos.de hört da an der Stelle "default" deklariert ist?
Demnach würde ich dieses:

Code: Select all

server {
    listen 80 default;
    listen [::]:80 default;
      return 307 https://$host$request_uri;
}
mal in dieses abändern:

Code: Select all

server {
    listen 80 mainkaichaos.de www.mainkaichaos.de ;
    listen [::]:80  mainkaichaos.de www.mainkaichaos.de ;
    return 301 https://$host$request_uri;
}
Und natürlich den reload nicht vergessen.

Re: nginx proxi vor Rails/Puma

Posted: 2019-09-04 10:16
by ddm3ve
Das hier:

if ($scheme != "https") {
rewrite ^ https://$host$uri permanent;
}

im Block für https wird nicht funktionieren, da eine https Verbindung bereits existiert.

Re: nginx proxi vor Rails/Puma

Posted: 2019-09-04 10:19
by ddm3ve
Teil2:

Code: Select all

server {
	listen 80 default_server;
	listen [::]:80 default_server;
	server_name example.com www.example.com;
	return 301 https://$server_name$request_uri;
}
example.com durch deine Domain ersetzen, damit er auch weiss, dass er dafür zuständig ist.

Re: nginx proxy vor Rails/Puma

Posted: 2019-09-04 18:09
by Herbie
Vielen Dank erstmal. Jetzt bin ich schon einen Schritt weiter, die Umschaltung von http auf https funktioniert. Jetzt habe ich aber immer noch das Problem, dass die nginx default Page angezeigt wird, d. h. der zweite Server-Block, die Proxy Funktion geht nicht.

Wenn ich im Browser https://mainkaichaos.de eingebe, funktioniert es, wenn ich das https:// weglasse, wird die nginx default page angezeigt.

Code: Select all

upstream initiative {
  server unix:///var/run/initiative.sock;
}

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name mainkaichaos.de www.mainkaichaos.de;
        return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;

    server_name mainkaichaos.de www.mainkaichaos.de;

  ssl_certificate     /etc/nginx/cert_mainkaichaos/public.crt;
  ssl_certificate_key /etc/nginx/cert_mainkaichaos/ssl.key;

  root   /home/www/mainkaichaos/public/;     # I assume your app is located at that location

  location / {
    proxy_pass http://initiative; # match the name of upstream directive which is defined above
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Ssl on;
  }

 }

Re: nginx proxi vor Rails/Puma

Posted: 2019-09-11 13:25
by ddm3ve
Wenn der Hostname / die Adresse stimmt, dann leitet er weiterhin nicht auf HTTPS um.
Per HTTPS ist die Seite erreichbar, aber .... das Zertifikat ist ungültig. Es wird jedoch eine Webseite angezeigt.

Versuche es ggf. mal mit einem rewrite statt return.
Findet sich auch hier: https://bjornjohansen.no/nginx-redirect

Und prüfe, ggf. ob nicht per Include irgendwo eine Standardkonfiguration des Betriebsystemes eingebunden ist, die das überschreibt.