[error] access forbidden by rule

Gena Makhomed gmm на csdoc.com
Вт Июл 12 13:45:45 UTC 2022


On 10.07.2022 11:41, Maxim Dounin wrote:

> Вы чуть раньше в этом треде писали Илье, "client sent plain HTTP
> request to HTTPS port".  Как и другие ошибки в клиентских
> запросах, эти ошибки логгируются на уровне info.

nginx/1.23.0 из официального репозитория nginx.org

В error.log есть такая запись:

2022/07/12 16:00:00 [error] 16594#16594: *21415 access forbidden by 
rule, client: 62.46.205.111, server: gitlab.example.com, request: "GET 
/api/v4/user HTTP/2.0", host: "gitlab.example.com"

То, что какому-то клиенту возвращается 403 статус - разве это ошибка,
которую необходимо писать в error.log на уровне [error] а не [info] ?

Кстати, директивы limit_conn_log_level и limit_req_log_level
зачем-то по умолчанию стоят на уровне error, как будто это есть
ошибка на стороне сервера, если какому-то клиенту будет запрещен
доступ.

Директива deny_log_level в nginx вообще отсутствует.

Может быть имеет смысл сделать директиву deny_log_level
и для всех трех директив: limit_conn_log_level,
limit_req_log_level и deny_log_level сделать значением
по умолчанию info ?

Это было бы логично и соответствовало бы общему правилу,
что все ошибки в клиентских запросах логгируются на уровне info.

P.S.

Конфиг /etc/nginx/conf.d/gitlab.example.com.conf:

server {

     listen 443 ssl http2;

     server_name gitlab.example.com;

     ssl_certificate 
/etc/letsencrypt/live/gitlab.example.com/fullchain.pem;
     ssl_certificate_key 
/etc/letsencrypt/live/gitlab.example.com/privkey.pem;

     location / {
         allow 111.222.33.144;
         allow 172.17.113.100;
         allow 172.17.113.101;
         allow 172.17.113.102;
         allow 172.17.113.103;
         deny all;
         proxy_pass http://172.17.113.100:9000;
     }

     location /users/auth/google_oauth2/callback {
         proxy_pass http://172.17.113.100:9000;
     }

     location /-/google_api/auth/callback {
         proxy_pass http://172.17.113.100:9000;
     }
}

server {

     listen 80;

     server_name gitlab.example.com;

     location / {
          return 301 https://gitlab.example.com$request_uri;
     }

     location /.well-known/acme-challenge { default_type text/plain; 
root /opt/letsencrypt; }
}

Конфиг /etc/gitlab/gitlab.rb на сервере 172.17.113.100:

nginx['listen_port'] = 9000

nginx['listen_https'] = false

-- 
Best regards,
  Gena


Подробная информация о списке рассылки nginx-ru