Probleme beim Festlegen von Subdomains unter NGINX

-1

Ich richte gerade OpenMediaVault auf meinem Rock64 Single Board-PC ein, der auf Debian basiert und über die Web-GUI von NGINX auf Port 80 konfiguriert wird.

Ich versuche gerade, Nextcloud mit NGINX, MariaDB / MySQL und PHPMyAdmin zu installieren und ursprünglich wollte ich Docker verwenden, um sie alle zu installieren und zu verwalten. Da ich leider nur Probleme hatte, kehrte ich zur Installation der Software aus dem Linux-Repository zurück.

Ich habe erfolgreich einen MySQL-Server mit einem Benutzer und einer Datenbank eingerichtet, die für Nextcloud bereit sind, und habe es geschafft, PHPMyAdmin auf einem anderen Port 8080 zum Laufen zu bringen.

Anstatt Ports zu verwenden, würde ich gerne Subdomains verwenden, aber ich kann sie scheinbar nicht zum Laufen bringen. Bisher habe ich die Root-Verzeichnisse wie folgt eingestellt: -

/var/www/openmediavault
/var/www/phpmyadmin
/var/www/nextcloud

Ich möchte die folgenden Subdomains: - Hinweis: Ich werde SSL zu einem späteren Zeitpunkt einrichten, sobald ich dies über ein WAN übernehme.

Mein NGINX ist für die Verwendung von /etc/nginx/sites-available und konfiguriert /etc/nginx/sites-enabled

Die folgenden symbolischen Links werden mit den jeweiligen Namen verwendet: -

ln -s /etc/nginx/sites-available/openmediavault-webgui /etc/nginx/sites-enabled/openmediavault-webgui
ln -s /etc/nginx/sites-available/phpmyadmin /etc/nginx/sites-enabled/phpmyadmin
ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/nextcloud

Dies ist der Inhalt der Datei openmediavault-webgui

server {
    server_name openmediavault-webgui;
    root /var/www/openmediavault;
    index index.php;
    autoindex off;
    server_tokens off;
    sendfile on;
    large_client_header_buffers 4 32k;
    client_max_body_size 25M;
    error_log /var/log/nginx/openmediavault-webgui_error.log error;
    access_log /var/log/nginx/openmediavault-webgui_access.log combined;
    error_page 404 = /404.php;
    location /404.html {
        internal;
    }
    location /extjs6/ {
        alias /usr/share/javascript/extjs6/;
        expires 2d;
        }
    location ~ ^/(css|fonts|js|images)/ {
        expires 2d;
    }
    location /favicon {
        expires 14d;
    }
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-fpm-openmediavault-webgui.sock;
        fastcgi_index index.php;
        fastcgi_read_timeout 60s;
        include fastcgi.conf;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
    listen 80 default_server;
    include /etc/nginx/openmediavault-webgui.d/*.conf;
}

Ich habe auch einen symbolischen Link vom Speicherort von PHPMyAdmin zum WWW-Verzeichnis

ln -s /usr/share/phpmyadmin /var/www/phpmyadmin

Danke vielmals

Wille

UPDATE 10:18 03/06/2019 Hier ist der Serverblock für / etc / nginx / sites-enabled / phpmyadmin server { listen 80; root /var/www/phpmyadmin; index index.php; server_name phpmyadmin.rock64.lan; location / { try_files $uri $uri/ =404; } location ~ \.php { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7-0.fpm.sock; fastcgi_index index.php; } }

UPDATE 11:25 03/06/2019 Nach der Konfiguration meines OpenWrt-Routers kann ich eine DNS-Suche durchführen und http://phpmyadmin.rock64.lanzeigt auf die richtige IP-Adresse. Allerdings bekomme ich 502 Bad Gateway. In einem Forum, auf das ich gestoßen bin, wurde das Festlegen des Eigentums und der Berechtigungen erwähnt. Ich habe mit ihnen rumgespielt, aber keine Veränderung.

Unter /etc/php/7.0/fpm/pool.d/ habe ich:

[openmediavault-webgui]
user = openmediavault-webgui
group = openmediavault-webgui

listen = /var/run/php-fpm-openmediavault-webgui.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0600

pm = ondemand
pm.max_children = 25
pm.process_idle_timeout = 10s

chdir = /

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; openmediavault php.ini settings ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Paths and Directories
php_value[include_path] = ".:/usr/share/php:/var/www/openmediavault"

; Pam Authentication Support (see /etc/pam.d)
php_value[pam.servicename] = "openmediavault-webgui";

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
php_value[upload_max_filesize] = 25M

; Maximum size of POST data that PHP will accept.
; http://php.net/post-max-size
php_value[post_max_size] = 25M

; Do not expose to the world that PHP is installed on the server.
; http://php.net/expose-php
php_value[expose_php] = Off

; Name of the session (used as cookie name).
; http://php.net/session.name
php_value[session.name] = X-OPENMEDIAVAULT-SESSIONID

; Default timeout for socket based streams (seconds)
; http://php.net/default-socket-timeout
php_value[default_socket_timeout] = 90

; Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
php_value[max_execution_time] = 90

UPDATE 09/05/2019 Ich habe den FQDN jetzt als phpmyadmin.rock64.test registriert, um Konflikte zu beseitigen. Dies ist im DNS meines OpenWrt-Routers registriert. Ich kann den Domainnamen pingen und erhalte eine Antwort von der statisch zugewiesenen IP-Adresse (192.168.1.123), die ich mit dem LAN-Hostnamen verknüpft habe. Zu anderen Testzwecken habe ich Port 8080 zugewiesen, aber weder der vollqualifizierte Domänenname noch der Zugriff über http://192.168.1.123:8080 funktionieren und führen immer noch zu einem fehlerhaften Gateway 502.

server {
    listen 8080;
    root /var/www/phpmyadmin;
    index index.php index.html index.htm;
    server_name phpmyadmin.rock64.test;
    server_tokens off;
    location ~ \.php$ {
        try_files $uri +404;
#       include snippets/fastcgi-php.conf;
        include /etc/nginx/fastcgi.conf;
        include /etc/nginx/fastcgi_params;
#       fastcgi_pass unix:/var/run/php/php7-0.fpm.sock;
        fastcgi_index index.php;
        fastcgi_pass 127.0.0.1:9000;
    }
    location ~ /\. {
        access_log off;
        log_not_found off;
        deny all;

    }
}
willowen100
quelle
Verwenden Sie keine willkürliche TLD, wie .lanSie sich selbst Kollisionen aussetzen. Verwenden Sie entweder die Namen, die für diesen Zweck definiert sind (siehe RFC2606, aber normalerweise .exampleoder .test) oder erstellen Sie einen echten Domänennamen in einer vorhandenen TLD und verwenden Sie ihn dann intern als Suffix für alle Namen.
Patrick Mevzek
@PatrickMevzek Ich habe auf die lokale TLD umgestellt, die das System OMV (Debian) standardmäßig verwendet. Ich muss die DNS-Tabelle meines Routers wie zuvor aktualisieren. Ich werde ein Update veröffentlichen, sobald ich es getestet habe.
Willowen100
.localwird von mDNS (Multicast-DNS) verwendet, daher ist es in Ordnung, wenn Sie absolut sicher sind, dass kein Gerät in Ihrem Netzwerk dieses Protokoll verwendet. Andernfalls benötigen Sie einen anderen, wenn Sie Konflikte vermeiden möchten.
Patrick Mevzek

Antworten:

1

Der server_namesollte einen vollqualifizierten Domainnamen enthalten, wie zserver_name xyz.example.com

Die Details finden Sie in den Nginx-Dokumenten .

kubanczyk
quelle
Gibt es einen Platzhalter, den ich für die Hauptdomain selbst verwenden kann? Im Moment habe ich einen DHCP-Hostnamen mit einem Suffix, so dass alle meine LAN-Clients "hostname.lan" sind. Muss ich speziell den vollständigen Hostnamen festlegen oder kann ich einen Platzhalter oder etwas anderes verwenden, um das OMV / Debian auszuwählen? Hostname des Servers ist? Ich habe versucht, 'server_name phpmyadmin. *' Zu setzen, NGINX neu zu starten und alles, was ich bekam, war, dass der Server nicht gefunden wurde.
Willowen100
1

Sie müssen serverfür jede Ihrer Domänen einen Block erstellen und den Domänennamen in der server_nameDirektive angeben.

Tero Kilkanen
quelle
Wird der Einzug des Serverblocks durch Tabulatoren oder Leerzeichen vorgegeben? Solange ich das Stammverzeichnis für jede Unterdomäne auf das richtige Verzeichnis in '/ var / www' setze, spielt es auch eine Rolle, dass der FQDN nicht auch der Name des Verzeichnisses ist.
Willowen100
Ich denke, das einzige, was bei dem serverBlock zählt, sind die {}Charaktere. Der Name des rootVerzeichnisses macht keinen Unterschied.
Tero Kilkanen