Проблема с nginx .conf для нескольких серверов - PullRequest
0 голосов
/ 14 января 2020

nginx .conf с несколькими разделами сервера в одном файле (без включений).

Сервер 1 имеет свой индекс. html в root / usr / share / nginx / html;

Сервер 2 имеет свой index_pa. html в root / usr / доля / Nginx / server2; с индексом index_pa.html;

Параллельные каталоги html / и server2 / имеют одного владельца root: root и идентичные права 755. Все файлы в обоих каталогах принадлежат root: root с правами 644.

При вызове серверов через браузер первый всегда отвечает нормально, но server2 выдает ошибку 403, запрещенную, также задокументированную в /var/log/nginx/error.log: [error] 19929 # 0: * 5 Индекс каталога "/ usr / share / nginx / server2 /" запрещен, client:, server:, запрос: "GET / HTTP / 1.1", host: ""

Я уже попытался изменить владельца сервера directoy2 / и его файлов на nginx: nginx, так как 'ps -ef | grep nginx' показал, что пользователь nginx обслуживает эту сущность, но та же ошибка.

Когда я копирую файл index_pa. html с server2 / в html / и меняю root server2 на тот же путь, который указан в первом разделе о сервере, сервер 2 работает. Но я не хочу, чтобы все файлы для двух веб-страниц находились в одном каталоге. Что я тут не так делаю?

Server: Oracle-Linux-7.7-2019.12.18-0
nginx: 1.12.2

Завершено nginx .conf (без реальных доменов)

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.

    include /etc/nginx/conf.d/*.conf;

server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

# Settings for a TLS enabled server
#
#    server {
#        listen       443 ssl http2 default_server;
#        listen       [::]:443 ssl http2 default_server;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        ssl_certificate "/etc/pki/nginx/server.crt";
#        ssl_certificate_key "/etc/pki/nginx/private/server.key";
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers HIGH:!aNULL:!MD5;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        location / {
#        }
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }

# always runs ok:

server {
    server_name server1.domain1.de; # managed by Certbot
        root /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/server1.domain1.de/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/server1.domain1.de/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

# problematic server 2:

server {
     server_name www.domain2.com; # managed by Certbot
     root /usr/share/nginx/server2;
     index index_pa.html;

# IF I COPY index_pa.html to /usr/share/nginx/html/ and change above root statement accordingly, it works, see initial text above.

     location / {
    try_files $uri $uri/ =404;     
     }
     error_page 404 /404.html;
            location = /40x.html {
        }
     error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }

    listen [::]:443 ssl; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/www.domain2.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/www.domain2.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

# server 3 with identical problems like server 2.
# same domain, but server 2 has a www. and server 3 has not
# thus having different LetsEncrypt certificates for SSL

server {
     server_name domain2.com; # managed by Certbot
     root /usr/share/nginx/html;
     index index_pa.html;
# SO THIS WORKS if the index_pa.html is in the html directory. Same owner and rights as in the parallel directory were it doesn't work, see server2
     location / {
        try_files $uri $uri/ =404;    
     }
     error_page 404 /404.html;
        location = /40x.html {
        }
     error_page 500 502 503 504 /50x.html;
            location = /50x.html {
    }

    listen [::]:443 ssl; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/domain2.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/domain2/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot


}


server {
        if ($host = server1.domain1.de) {
            return 301 https://$host$request_uri;
        } # managed by Certbot

        listen       80 ;
        listen       [::]:80 ;
        server_name server1.domain1.de;
        return 404; # managed by Certbot
    }

server {

    if ($host = www.domain2.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

     server_name www.domain2.com;
     listen 80 ;
     listen [::]:80 ;
    return 404; # managed by Certbot
}

server {

    if ($host = domain2.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

     server_name domain2.com;
     listen 80 ;
     listen [::]:80 ;
    return 404; # managed by Certbot
}


} #http
...