У меня есть несколько веб-сайтов, размещенных на Ubuntu 20.04.4 LTS (focal) с использованием nginx 1.18.0.
На 2 сайтах есть эта проблема.
Файлы сборки веб-сайта находятся в корзине aws S3, и для их обслуживания используется nginx с использованием proxy_pass.
доступ к веб-сайту по ссылке aws работает нормально:
http://sub.exanple.net.s3-website.ap-south-1.amazonaws.com
несколько дней назад я начал получать следующую ошибку при доступе по моей ссылке (не было ведра s3):
<Error>
<Code>DuplicateHeaderName</Code>
<Message>Your request contains duplicate headers.</Message>
<RequestId>ECF9EYBG9JYDKY3W</RequestId>
<HostId>9RZva0WYEYGtcoWadqm3MrOOqFhiWLwS6Ax8YwMStzz3pdW1rqNkKcPxszT9ENcODGlKyoqfBXw=</HostId>
</Error>
вот файл конфигурации сайта: Я изменил фактическую ссылку на sub.example.net
root /var/www/sub.example.net/html;
index index.html index.htm index.nginx-debian.html;
server_name sub.example.net;
location / {
# proxy_set_header Connection "";
# proxy_set_header Authorization '';
proxy_set_header Host sub.example.net.s3-website.ap-south-1.amazonaws.com;
# proxy_hide_header x-amz-id-2;
# proxy_hide_header x-amz-request-id;
# proxy_hide_header x-amz-meta-server-side-encryption;
# proxy_hide_header x-amz-server-side-encryption;
# proxy_hide_header Set-Cookie;
# proxy_ignore_headers Set-Cookie;
# proxy_intercept_errors on;
# add_header Cache-Control max-age=31536000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_pass http://sub.example.net.s3-website.ap-south-1.amazonaws.com/;
}
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/example.net-0002/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.net-0002/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
Заголовки ответа:
content-type: application/xml
date: Thu, 09 Feb 2023 04:30:08 GMT
server: nginx/1.18.0 (Ubuntu)
x-amz-id-2: 9RZva0WYEYGtcoWadqm3MrOOqFhiWLwS6Ax8YwMStzz3pdW1rqNkKcPxszT9ENcODGlKyoqfBXw=
x-amz-request-id: ECF9EYBG9JYDKY3W
Заголовки запроса: Я изменил ссылку в авторитетном шапке, только остальное точно такое же.
:authority: sub.example.net
:method: GET
:path: /?sid=06de736ae4e63d2a700f0bf7ec38&user=atsuae&lang=en&b=prestable&v=1.51
:scheme: https
accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
accept-encoding: gzip, deflate, br
accept-language: en-US,en;q=0.9
cache-control: max-age=0
cookie: _ga=GA1.1.1073658407.1674799704; _ga_L6NP7TDMF6=GS1.1.1675855157.3.1.1675856361.0.0.0
sec-ch-ua: "Not_A Brand";v = "99", "Google Chrome";v = "109", "Chromium";v = "109"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
sec-fetch-dest: document
sec-fetch-mode: navigate
sec-fetch-site: cross-site
sec-fetch-user: ?1
upgrade-insecure-requests: 1
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
Я попытался перезапустить сервер и запустить nginx -t
.
если кто-нибудь может указать мне, где проблема или как ее найти, я буду очень благодарен.
Я исправил проблему, комментируя
# proxy_set_header Host $host;