Nginx 403 Запрещено для местоположения и локального хоста

Моя цель - получить доступ к определенному местоположению (например, phpmyadmin) с помощью туннеля SSH http://localhost/phpmyadmin

Я только что установил Ubuntu 20.04 с Nginx. Следующая конфигурация нормально работала с Ubuntu 18.04.

Я отредактировал / etc / nginx / sites-available / default, добавив:

  location /phpmyadmin {
    #Allow localhost
    allow 127.0.0.1;
    #deny all the others ip
    deny all;
  }

когда я обращаюсь к http://localhost/phpmyadmin, я получаю сообщение об ошибке:

403 Запрещено nginx / 1.17.10 (Ubuntu)

Просто для тестирования я удалил «отрицать все»; все работает нормально, но каждый IP-адрес может получить доступ к местоположению phpmyadmin.

журнал ошибок nginx:

2020/05/05 23:52:13 [ошибка] 21905 # 21905: * 1 доступ запрещен правилом, клиент: :: 1, сервер: _, запрос: "GET / phpmyadmin / HTTP / 1.1", хост: "localhost "

server {
    listen 80 default_server;
    listen [::]:80 default_server;


    root /var/www/html;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html index.php;

    server_name _;

    location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            try_files $uri $uri/ =404;
    }

   # pass PHP scripts to FastCGI server
    #
    location ~ \.php$ {
            include snippets/fastcgi-php.conf;

            # With php-fpm (or other unix sockets):
            fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
            # With php-cgi (or other tcp sockets):
            #fastcgi_pass 127.0.0.1:9000;
    }


location /phpmyadmin {
    satisfy all;
    allow 127.0.0.1;
    deny all;
    }


   }

Есть идеи, почему эта конфигурация больше не работает с ubuntu 20.04 и nginx 1.17.10?


person Steve    schedule 05.05.2020    source источник


Ответы (1)


Вам также нужно разрешить :: 1 ... И также добавить параметры для php внутри блока местоположения.

Попробуйте вот так

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html index.php;

    server_name _;

    location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            try_files $uri $uri/ =404;
    }

   # pass PHP scripts to FastCGI server
    #
    location ~ \.php$ {
            include snippets/fastcgi-php.conf;

            # With php-fpm (or other unix sockets):
            fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
            # With php-cgi (or other tcp sockets):
            #fastcgi_pass 127.0.0.1:9000;
    }


    location ^~ /phpmyadmin/ {
            allow 127.0.0.1;
            allow ::1;
            deny all;
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }


}
person Dilson Rainov    schedule 05.05.2020
comment
Могу я увидеть весь ваш vhost? - person Dilson Rainov; 06.05.2020
comment
Я добавил полную конфигурацию в vhost. Когда я удаляю отрицать все, он работает. - person Steve; 06.05.2020
comment
попробуйте изменить местоположение на location ^~ /phpmyadmin - person Dilson Rainov; 06.05.2020
comment
еще ничего. У меня есть попытки с другим местоположением: location ^~ /test { satisfy all; #requires both conditions allow 127.0.0.1; #allow localhost only deny all; #deny all other sources }, но результат тот же. - person Steve; 06.05.2020
comment
Извините за вопрос, но вы перезагружаете или перезапускаете nginx? Что в результате nginx -t - person Dilson Rainov; 06.05.2020
comment
это нормально. Да, я перезагружаю и перезапускаю службу. Я даже снова установил только ubuntu 20.04 и nginx, но получил тот же результат. - person Steve; 07.05.2020
comment
Я предоставлю полезный тест позже ... Извините, что не могу помочь в данный момент - person Dilson Rainov; 07.05.2020
comment
Я видел в журнале клиентский ip, ... access forbidden by rule, client: ::1, ..., и вам нужно разрешить :: 1 и добавить параметры php - person Dilson Rainov; 07.05.2020
comment
@Steve Ты снова тестировал? - person Dilson Rainov; 08.05.2020
comment
Предложенное вами решение работает нормально! Решением было добавить строку allow ::1;. Спасибо. - person Steve; 08.05.2020