Как заблокировать доступ к неправильному url на nginx?

Ссылка скопирована
1 ответ

Всем доброго времени суток. Я новичок в работе с nginx'ом и сейчас возникла ситуация, с которой не знаю как разобраться (гуглить пробовал, но ничего не нашел, может неправильно искал)
Ситуация следующая:
есть сайт (mydomain.ru), который находится хостинге, также есть сайты (mail.mydomain.ru и a2nta.mydomain.ru), которые хостятся локально
через cloudflare dns раньше было выстроено, что mydomain.ru отправляется на IP хостинга, а mail отправляется на наш IP)

сейчас возникла проблема, что nginx по url main.mydomain.ru открывается содержимое a2nta.mydomain.ru (днс запись из cloudflare пока не убирали, вероятно позднее потребуется вновь).
Вопрос: как запретить открываться сайту a2nta через mail?

конфиг a2nta.mydomain.ru выглядит так

server {         listen 172.16.1.166:80;         server_name a2nta.mydomain.ru www.a2nta.mydomain.ru;         return 301 https://$host$request_uri; }  server {         listen 172.16.1.166:443 ssl;          root /var/www/puper;          # Add index.php to the list if you are using PHP         index index.html index.htm index.nginx-debian.html;          server_name a2nta.mydomain.ru www.a2nta.mydomain.ru;          ssl_certificate /home/ubuntu/puper.crt;         ssl_certificate_key /home/ubuntu/puper.key;          location / {                 proxy_pass https://172.16.0.102/;                 proxy_set_header Host $host;                 proxy_set_header X-Real-IP $remote_addr;                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;                 proxy_set_header X-Forwarded-Proto $scheme;         } }

server { listen 172.16.1.166:80; server_name a2nta.mydomain.ru www.a2nta.mydomain.ru; return 301 https://$host$request_uri; } server { listen 172.16.1.166:443 ssl; root /var/www/puper; # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html; server_name a2nta.mydomain.ru www.a2nta.mydomain.ru; ssl_certificate /home/ubuntu/puper.crt; ssl_certificate_key /home/ubuntu/puper.key; location / { proxy_pass https://172.16.0.102/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }

конфиг default от самого nginx:

server {         listen 80 default_server;         listen [::]:80 default_server;          # SSL configuration         #         listen 443 ssl default_server;         listen [::]:443 ssl default_server;         ssl_certificate /home/ubuntu/puper.crt;         ssl_certificate_key /home/ubuntu/puper.key;          root /var/www/html;          # Add index.php to the list if you are using PHP         index index.html index.htm index.nginx-debian.html;          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;         } }

server { listen 80 default_server; listen [::]:80 default_server; # SSL configuration # listen 443 ssl default_server; listen [::]:443 ssl default_server; ssl_certificate /home/ubuntu/puper.crt; ssl_certificate_key /home/ubuntu/puper.key; root /var/www/html; # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html; 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; } }

Дополнительно:

Ответы:

Завести отдельный серверный блок с server_name main.mydomain.ru - и настроить там редирект или отдачу нужной ошибки.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Антон С. Ответ

Для блокировки доступа к определенному URL на сервере Nginx, можно воспользоваться директивой `location` в конфигурационном файле сервера.

Прежде всего, необходимо открыть конфигурационный файл Nginx, который обычно находится в директории `/etc/nginx/sites-available/` или `/etc/nginx/conf.d/`.

Затем добавляем следующий блок конфигурации внутри блока `server`:

server {
    ...
 
    location /неправильный_url {
        deny all;
        return 403;
    }
 
    ...
}

server { ... location /неправильный_url { deny all; return 403; } ... }

В данном примере, мы используем директиву `location` для указания URL, к которому нужно запретить доступ. Директива `deny all;` блокирует доступ к этому URL для всех пользователей, а `return 403;` отправляет клиенту ошибку 403 (Forbidden), если он попытается получить доступ к данному URL.

После внесения изменений в конфигурационный файл, необходимо перезапустить сервер Nginx командой `sudo systemctl restart nginx`.

Теперь доступ к указанному URL будет заблокирован для всех пользователей, и они будут получать ошибку 403 при попытке доступа к нему.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно