Я nginx новичок.
Я настраиваю OnlyOffice на тестовой виртуальной машине здесь. Я запускаю OnlyOffice в контейнере docker.
Я создал файл конфигурации nginx для прокси домена, для которого у меня был сертификат, для контейнера OnlyOffice docker. Все работало нормально.
Я решил использовать другое доменное имя. Я оставил исходный файл conf на месте и добавил новый для другого домена, указав на тот же docker контейнер и порты.
Внезапно оба экземпляра перестали работать! Я потратил целую вечность, пытаясь выяснить, почему, и кажется, что некоторые запросы больше не пересылаются правильно.
Я удалил исходный файл conf с сайтов с включенной поддержкой, и он снова начал работать.
Я полагаю, что есть проблема с моими файлами conf или с nginx пересылкой нескольких отдельных сайтов на одни и те же порты прокси.
Вот один из файлов conf (другой точно такой же, но с другим хостом). Очевидно, я отредактировал доменное имя, чтобы защитить виновных!
map $http_host $this_host {
"" $host;
default $http_host;
}
map $http_x_forwarded_proto $the_scheme {
default $http_x_forwarded_proto;
"" $scheme;
}
map $http_x_forwarded_host $the_host {
default $http_x_forwarded_host;
"" $this_host;
}
map $http_upgrade $proxy_connection {
default upgrade;
"" close;
}
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Forwarded-Host $the_host;
proxy_set_header X-Forwarded-Proto $the_scheme;
proxy_headers_hash_max_size 512;
proxy_headers_hash_bucket_size 128;
log_format upstreamlog '[$time_local] $remote_addr - $remote_user - $server_name to: $upstream_addr: $request upstream_response_time $upstream_response_time msec $msec request_time $request_time';
server {
listen 0.0.0.0:443 ssl;
listen [::]:443 ssl default_server;
ssl_certificate /etc/letsencrypt/live/leaf.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/leaf.example.com/privkey.pem;
server_name leaf.example.com;
fastcgi_keep_conn on;
fastcgi_index Default.aspx;
fastcgi_intercept_errors on;
include fastcgi_params;
fastcgi_param HTTP_X_REWRITER_URL $http_x_rewriter_url;
fastcgi_param SERVER_NAME $host;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO "";
fastcgi_read_timeout 600;
fastcgi_send_timeout 600;
access_log /var/log/nginx/access.log upstreamlog;
server_tokens off;
rewrite ^\/OfficeWeb(\/apps\/.*)$ /web-apps$1 redirect;
location / {
proxy_pass http://localhost:9200;
proxy_http_version 1.1;
}
location /spellchecker/ {
proxy_pass http://localhost:9280/;
proxy_http_version 1.1;
}
}
Должен ли я сообщить об этом как об ошибке, или я сделал что-то действительно глупое, чтобы вызвать проблему?