. Недавно я удалил apache2 для Nginx. Я пытаюсь прослушивать 88, 808 и 888 для своих сайтов и перенаправлять разные поддомены для каждого (и другого домена на другой сервер ). проблема в том, что Nginx дает плохой шлюз для всех проксируемых запросов и тайм-аут для прямого доступа по IP.
proxy conf:--> otherdomain.fr = ошибка 502, плохой шлюз
# HTTP
server {
# Listen on ipv4
listen 80;
#listen [::]:80;
server_name ~.*.otherdomain.fr;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass "http://192.168.1.17";
}
}
server{
listen 80;
server_name nextcloud.domain.me;
location / {
proxy_set_header Host $host;
proxy_pass "http://127.0.0.1:888";
proxy_redirect off;
}
}
server{
listen 80;
server_name domain.me;
location / {
proxy_set_header Host $host;
proxy_pass "http://127.0.0.1:808";
proxy_redirect off;
}
}
ex для порта 88:--> ip :88 = время ожидания
(очевидно,он включен, и пользователь nginx имеет доступ к файлам)
server {
# Listen on ipv4
listen 88;
location / {
root /var/www/html/tests;
}
}
Я, очевидно, делаю что-то не так, но я не могу понять, что, если бы вы могли помочь мне, это было бы невероятно. Заранее спасибо!
РЕДАКТИРОВАТЬ:
netstat -tulpen | grep -E '8.?8'
tcp 0 0 127.0.0.1 :10028 0.0.0.0:*
LISTEN 0 28186 1929/мастер tcp 0 0 0.0.0.0 :80 0.0.0.0 :*ПРОСЛУШИВАТЬ 0 91603 8801/nginx :master TCP 0 0 127.0.0.1 :12340
0.0.0.0 :*LISTEN 0 25868 734/dovecot tcp 0 0 127.0.0.1 :631 0.0.0.0:*
LISTEN 0 19881 497/cupsd tcp 0 0 0.0.0.0 :88 0.0.0.0 :*ПРОСЛУШИВАТЬ 0 75033 8801/nginx :master TCP 0 0 0.0.0.0 :888
0.0.0.0 :*LISTEN 0 75032 8801/nginx :master tcp 0 0 0.0.0.0 :443 0.0.0.0:*
LISTEN 0 75030 8801/nginx :master tcp 0
0 127.0.0.1 :10025 0.0.0.0 :*ПРОСЛУШИВАТЬ 0
28182 1929/мастер udp6 0 0 :::32885
:::*113 21172
482/avahi -демон :r"""
Вам не нужны кавычки вокруг целевого URL-адреса proxy_pass
.
Основная проблема заключается в server_name ~.*.otherdomain.fr
и в том, что вы используете proxy_set_header Host $host
.
В этом случае кажется, что ваше регулярное выражение для имя_сервера
неверно и воспринимается как строка. Затем эта строка появляется в переменной $host
.
Вместо этого вам следует попробовать
server_name *.otherdomain.fr;
.Если это не сработает, используйте
proxy_set_header Host $http_host;
Который передает дальше заголовок HTTP Host вместо содержимого переменной $host
.