在 NGINX 上设置子域名时遇到问题

在 NGINX 上设置子域名时遇到问题

我目前正在基于 Debian 的 Rock64 单板电脑上设置 OpenMediaVault,并通过在端口 80 上从 NGINX 运行的 Web GUI 进行配置。

我目前正在尝试使用 NGINX、MariaDB/MySQL 和 PHPMyAdmin 安装 Nextcloud,最初我希望使用 Docker 来安装和管理它们。不幸的是,我遇到了很多问题,所以我恢复了从 Linux 存储库安装软件。

我已经成功设置了一个 MySQL 服务器,其中有用户和数据库可供 Nextcloud 使用,并且已设法让 PHPMyAdmin 在不同的端口 8080 上运行。

我想使用子域而不是端口,但似乎无法让它们工作。到目前为止,我已将根目录设置为以下形式:-

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

我想要以下子域名:-NB:一旦我通过 WAN 接管它,我将在稍后设置 SSL。

我的 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

非常感谢

将要

更新时间 2019/03/06 10:18 这是 /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; } }

更新时间 2019/03/06 11:25 配置我的 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

更新日期 2019/09/05 我现在已将 FQDN 注册为 phpmyadmin.rock64.test 以消除任何冲突,并且它已在我的 OpenWrt 路由器的 DNS 中注册。我可以 ping 域名,并从我已链接到 LAN 主机名的静态分配 IP 地址 (192.168.1.123) 获得回复。出于其他测试目的,我分配了端口 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;

    }
}

答案1

应该server_name包含完全限定的域名,例如server_name xyz.example.com

详情如下在 nginx 文档中

答案2

您需要为每个域创建一个块,并在指令server中列出域名。server_name

相关内容