Nginx configs nach Erstellen con ReverseProxy Eintrag per GUI gelöscht

Status
Für weitere Antworten geschlossen.

DerLord

Benutzer
Mitglied seit
25. Mrz 2016
Beiträge
113
Punkte für Reaktionen
0
Punkte
22
Moin zusammen,

ich bastel nach dem Update gestern auf DSM 6.0 meine alte Apache vHost Lösung per Nginx nach. Bisher lief alles 1a. Ich wollte mir dann mal die generierte Konfiguration aus der GUI heraus anschauen und habe mir testweise einen Eintrag per "Webstation->Reverse Proxy" erstellt. Habe ich schon ein paar mal gemacht und funktionierte auch immer. Aber heute Morgen konnte ich nach dem Erstellen eines Eintrags den Webserver nicht mehr starten:

Auszug aus error.log:
Rich (BBCode):
2016/03/25 09:35:09 [emerg] 11612#11612: open() "/etc/nginx/conf.d/main.conf" failed (2: No such file or directory) in /etc/nginx/nginx.conf:7

Ich habe gesehen, dass der komplette Ordner "\etc\nginx\config.d\" verschwunden ist. Da einige Dateien aus diesem Ordner (oder war es nicht ein Link?), wie main.conf und events.conf im Hauptconfig "\etc\nginx\nginx.conf" per include eingebunden werden und dies auch immer so generiert wird, kann ich den Dienst nicht mehr starten.

Weiß jemand, wie man das wieder repariert bekommt ohne gleich das komplette System zurücksetzen und neu installieren zu müssen? Bin seit 3 Wochen mit der NAS-Konfiguration beschäftigt und habe auch eine ganze Reihe 3Party-Pakete installiert und eingerichtet und ist alles soweit auch komplett funktionsfähig (auch jetzt noch). Ich würde da nur äußerst äußerst ungern wieder von vorne anfangen wollen.

Bin über jeden Tipp dankbar ;-)

System: RS815+ mit aktuellester DSM 6.0-7321

Viele Grüße
DerLord
 

DerLord

Benutzer
Mitglied seit
25. Mrz 2016
Beiträge
113
Punkte für Reaktionen
0
Punkte
22
Tja, was soll ich sagen? Es funzt wieder o_O

Ich habe eigentlich nichts gemacht, was ich vorher nicht schon mindestens 2-3 Mal versucht habe, nur in anderer Reihenfolge. Hier mal die letzte Reihenfolge, vielleicht kann ja jemand nach mir mit diesem Problem damit auch eine Lösung herbeizaubern.

1. Webstation inkl. aller abhängigen Pakete wie phpMyAdmin deinstalliert
2. die betroffenen includes zu main.conf und events.conf aus "\etc\nginx\nginx.conf" per vorangehendem "#" auskommentiert (ohne Tüdelchen)
3. nginx per SSH neugeartet -> nginx -s reload
4. Der Restart sollte nun ohne Fehlermeldung erfolgt sein, keine Antwort der Konsole ist hierbei eine gute Antwort ;-)
5. Im logfile ("\var\log\nginx\error.log") nachschauen, ob der Dienst erfolgreich gestartet wurde
6. Webstation wieder installieren und als Backend-Server wieder Nginx hinterlegen

Erklären kann ich es mir nicht. Ich kann auch nicht sagen, dass es genau so in dieser Reihenfolge erfolgen muss, aber dies war der letzte von x Versuchen, der dann auch zum Erfolg führte. Da ich die Rackstation zwischen den Versuchen immer neugestartet hatte, sollten dabei keine Querschläger entstanden sein.
 

DerLord

Benutzer
Mitglied seit
25. Mrz 2016
Beiträge
113
Punkte für Reaktionen
0
Punkte
22
Noch besser, habe den Nginx-Konfigurator gefunden. Die Ordnern und Dateien werden wohl jedes mal gelöscht und neu generiert, das Script scheint dabei beim GUI-Aufruf zwischen rm und mkdir abgeschmiert zu sein.

Kann man selber anstubsen:
\usr\syno\etc.defaults\rc.sysv\nginx-conf-generator.sh
 

PackElend

Benutzer
Mitglied seit
22. Okt 2011
Beiträge
85
Punkte für Reaktionen
0
Punkte
0
Guten Morgen,
gibt es dazu noch mehr infos?
Ich möchte den Nginx auch zum reverse proxy umfunktionieren und zusätzlich möchte ich noch 2 bis 3 Nginx Instanzen zum laufen bringen die über UNIX Socket mit dem Proxy verbandelt sind. Die Konfiguration ist beispielhaft unten gezeigt.
Was ich natürlich nicht möchte ist, dass mir DSM meine manuelle Konfiguration ungefragt überschreibt. Von daher würde ich gerne wissen, ob es dazu mehr Informationen gibt.

proxy
Rich (BBCode):
server {
        listen 80;
        listen [::]:80;
         listen 443 ssl;
         listen [::]:443 ssl;
        #include letsencrypt.conf;
        server_name www.foo.com foo.com;
        proxy_pass http://unix:/home/foo/foo.com.unix_socket;
}

Instanzen (separate server{...} Abschnitte)
Rich (BBCode):
server {
listen unix:/home/foo/foo.com.unix_socket;
root /home/foo/www_root;
        autoindex on;
}
 

PackElend

Benutzer
Mitglied seit
22. Okt 2011
Beiträge
85
Punkte für Reaktionen
0
Punkte
0
hier ist der Inhalt von
Rich (BBCode):
\usr\syno\etc.defaults\rc.sysv\nginx-conf-generator.sh
basierend auf
DSM 6.2.1-23824
aber ganz so schlau bin ich daraus noch nicht geworden.


Rich (BBCode):
#!/bin/bash
# Copyright (c) 2000-2016 Synology Inc. All rights reserved.

SZD_MUSTACHE="/usr/syno/share/nginx"
SZF_NGINX_MUSTACHE="$SZD_MUSTACHE/nginx.mustache"
SZF_AVAHI_MUSTACHE="$SZD_MUSTACHE/avahi.mustache"
SZD_TMP_NGINX="/var/tmp/nginx"
SZD_TMP_APP_D="$SZD_TMP_NGINX/app.d"
SZD_TMP_CONF_D="$SZD_TMP_NGINX/conf.d"
SZF_TMP_NGINX_CONF="$SZD_TMP_NGINX/nginx.conf"
SZF_RP_DATASTORE="$SZD_TMP_NGINX/ReverseProxy.tmp"
SZF_AVAHI_CONF="/etc/avahi/services/dsminfo.service"

GenerateConf()
{
	local mustache="$1"
	local json="$2"
	local conf="$3"
	/usr/syno/bin/synomustache "$mustache" $json -o "$conf"
}

/bin/rm -rf $SZD_TMP_APP_D $SZD_TMP_CONF_D
/bin/mkdir -p $SZD_TMP_APP_D $SZD_TMP_CONF_D
/usr/bin/touch $SZD_TMP_CONF_D/{{main,events}.conf,mime.types,scgi_params}
/usr/syno/bin/synow3 --gen
tmp=$(/bin/ls $SZD_TMP_NGINX/*.tmp)
GenerateConf "$SZF_NGINX_MUSTACHE" "$tmp" "$SZF_TMP_NGINX_CONF" || true

if [ -s "$SZF_RP_DATASTORE" ]; then
	GenerateConf "$SZD_MUSTACHE/Portal.mustache" "$SZF_RP_DATASTORE" "$SZD_TMP_APP_D/server.ReverseProxy.conf" || true
fi

if [ -s "$SZD_TMP_NGINX/DSM.tmp" ]; then
    GenerateConf "$SZF_AVAHI_MUSTACHE" "$SZD_TMP_NGINX/DSM.tmp" "$SZF_AVAHI_CONF" || true
fi
applist=$(/bin/ls /usr/syno/etc/www/app.d/*.mustache) || true
for var in $applist
do
	var=$(/usr/bin/basename "$var" | /bin/sed 's/.mustache//')
	tmpJson="$SZD_TMP_NGINX/app/$var.tmp"
	appMustache="/usr/syno/etc/www/app.d/$var.mustache"
	confTail="$var.conf"

	if [ -s "$appMustache" ] && [ -s "$tmpJson" ]; then
		# dsm included in 5000, www included in 80
		if [ "$(/bin/jq .injectable "$tmpJson")" = "true" ]; then
			GenerateConf "$appMustache" "" "$SZD_TMP_APP_D/www.$confTail" || true
		else
			GenerateConf "$appMustache" "" "$SZD_TMP_APP_D/dsm.$confTail" || true
		fi
		# alias
		if [ "$(jq .alias "$tmpJson")" != "null" ]; then
			GenerateConf "$appMustache" "$tmpJson" "$SZD_TMP_APP_D/.alias.$confTail" || true
			GenerateConf "$SZD_MUSTACHE/Alias_v2.mustache" "$tmpJson {"include":".alias.$confTail"}" "$SZD_TMP_APP_D/alias.$confTail" || true
		fi
		# server
		if [ "$(jq .fqdn "$tmpJson")" != "null" ] || [ "$(jq .alternativePort "$tmpJson")" != "null" ]; then
			GenerateConf "$appMustache" "$tmpJson {"server":true,"alias":null}" "$SZD_TMP_APP_D/.server.$confTail" || true
			GenerateConf "$SZD_MUSTACHE/server.mustache" "$tmpJson $SZD_TMP_NGINX/SSLProfile.tmp $SZD_TMP_NGINX/DSM.tmp {"include":".server.$confTail"}" "$SZD_TMP_APP_D/server.$confTail" || true
		fi
	fi
done

filelist=$(/bin/ls /etc.defaults/nginx/*) || true
for f in $filelist
do
	if [ -f "$f" ]; then
		cp "$f" "$SZD_TMP_NGINX/."
	fi
done
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat