Назад | Перейти на главную страницу

Возникли проблемы с настройкой поддоменов на NGINX

В настоящее время я настраиваю OpenMediaVault на моем одноплатном ПК Rock64, который основан на Debian и настраивается через веб-интерфейс, работающий с NGINX на порту 80.

В настоящее время я пытаюсь установить Nextcloud с помощью NGINX, MariaDB / MySQL и PHPMyAdmin, и изначально я надеялся использовать Docker для их установки и управления ими. К сожалению, у меня не было ничего, кроме проблем, поэтому я вернулся к установке программного обеспечения из репозитория Linux.

Я успешно настроил сервер MySQL с пользователем и базой данных, готовыми для Nextcloud, и мне удалось заставить PHPMyAdmin работать на другом порту 8080.

Вместо использования портов я хотел бы использовать поддомены, но я не могу заставить их работать. До сих пор я установил следующие корневые каталоги: -

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

Мне нужны следующие поддомены: - N.B Я настрою SSL позже, как только я перейду на WAN.

Мой NGINX настроен на использование /etc/nginx/sites-available и /etc/nginx/sites-enabled

Следующие символические ссылки будут использоваться с соответствующими именами: -

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

Это содержимое файла 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;
}

У меня также есть символическая ссылка из местоположения PHPMyAdmin в каталог www.

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

Большое спасибо

Будет

ОБНОВЛЕНИЕ 10:18 06.03.2019 Вот блок сервера для / 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; } }

ОБНОВЛЕНИЕ 11:25 06.03.2019 После настройки маршрутизатора OpenWrt я могу выполнить поиск в DNS и http://phpmyadmin.rock64.lan указывает на правильный IP-адрес. Однако я получаю 502 Bad Gateway. Один форум, с которым я столкнулся, упоминал о настройке прав собственности и разрешений. Я поигрался с ними, но без изменений.

В /etc/php/7.0/fpm/pool.d/ у меня есть:

[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

ОБНОВЛЕНИЕ 05.09.2019 Теперь я зарегистрировал полное доменное имя как phpmyadmin.rock64.test, чтобы устранить любые конфликты, и это зарегистрировано в DNS моего маршрутизатора OpenWrt. Я могу пропинговать доменное имя и получить ответ со статически назначенного IP-адреса (192.168.1.123), который я связал с именем хоста LAN. Для других целей тестирования я назначил порт 8080, но ни FQDN, ни доступ через http://192.168.1.123:8080 работает и по-прежнему приводит к плохому шлюзу 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;

    }
}

Вам нужно создать server блокировать для каждого из ваших доменов и указать доменное имя, указанное в server_name директива.

В server_name должно содержать полное доменное имя, например server_name xyz.example.com

Детали в документации nginx.