nginx 역방향 프록시를 통해 특정 get 변수가 포함된 요청만 허용

nginx 역방향 프록시를 통해 특정 get 변수가 포함된 요청만 허용

다른 서버의 API에서 콜백을 처리할 nginx 역방향 프록시가 있습니다. 이러한 콜백은 으로 이동 하지만 및가 https://callbackserver.com/?wc_api=App&secret=SECRET없는 다른 요청은 거부되기를 바랍니다.wc_apisecret

다음은 간단한 nginx 역방향 프록시 구성입니다...

server {
        listen 443 ssl;
        server_name redacted.domain;
        ssl_certificate /etc/letsencrypt/live/redacted.domain/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/redacted.domain/privkey.pem;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 5m;
        ssl_prefer_server_ciphers on;
        ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_dhparam /etc/ssl/certs/dhparam.pem;
        add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";

        location / {
                 proxy_pass_header Authorization;
                 proxy_pass http://127.0.0.1:8000;
                 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_http_version 1.1;
                 proxy_set_header Connection "";
                 proxy_buffering off;
                 client_max_body_size 0;
                 proxy_read_timeout 36000s;
                 proxy_redirect off;
        }
}

server {
        server_name redacted.domain;
        listen 80;
        return 301 https://redacted.domain$request_uri;
}

위의 설명에 따라 거부 항목을 만드는 방법을 알려주십시오.

답변1

정규식에 대해 $args를 테스트할 수 있습니다.

location / {
    if ( $args !~* "^wc_api=.+&secret=[^&;]" ) {
        return 403;
    }
    proxy_pass_header ...

관련 정보