У меня есть 1 местный HAProxy сервер (10.10.1.18), который используется для loadbalance 2 локальных веб-серверов nginx (web1= 10.10.1.21,web2= 10.10.1.22).
Я могу успешно подключиться к локальным ips веб-серверов к файлу index.php http://10.10.1.21/ а также http://10.10.1.22/
Однако когда я указываю локальный ip haproxy http://10.10.1.18/, это только приносит index.html файл вместо index.php файл. У нас также есть доменное имя, которое указывает публичный ip на haproxy, но http://example.uni.edu снова приносит файл index.html, а не файл index.php
Так что я не думаю, что это общедоступный или локальный ip, а скорее конфигурация haproxy или nginx
/etc/haproxy/haproxy.cfg
# ------------------------------------------------- -------------------- # Пример конфигурации для возможного веб-приложения. Увидеть # полная настройка параметров онлайн. # # http://haproxy.1wt.eu/download/1.4/doc/configuration.txt # # ------------------------------------------------- -------------------- # ------------------------------------------------- -------------------- # Глобальные настройки # ------------------------------------------------- -------------------- Глобальный # чтобы эти сообщения попали в /var/log/haproxy.log, вы будете # нужно: # # 1) настроить системный журнал для приема событий сетевого журнала. Готово # добавив опцию '-r' к SYSLOGD_OPTIONS в # / etc / sysconfig / syslog # # 2) настроить события local2 для перехода на /var/log/haproxy.log # файл. Строка, подобная следующей, может быть добавлена к # / etc / sysconfig / syslog # # local2. * /var/log/haproxy.log # log 127.0.0.1 local2 chroot / var / lib / haproxy pidfile /var/run/haproxy.pid максконн 10000 пользователь haproxy группа haproxy демон # включить стат Unix сокет сокет статистики / var / lib / haproxy / stats # ------------------------------------------------- -------------------- # общие значения по умолчанию, что все секции 'listen' и 'backend' будут #use, если не указано в их блоке # ------------------------------------------------- -------------------- по умолчанию режим http журнал глобальный вариант httplog вариант не может опция http-server-close опция forwardfor кроме 127.0.0.0/8 опция повторная отправка повторяет 3 тайм-аут http-запроса 10с время ожидания 1м тайм-аут подключения 10с тайм-аут клиента 1м тайм-аут сервера 1м тайм-аут http-keep-alive 10с проверка тайм-аута 10с максконн 10000 # ------------------------------------------------- -------------------- #HAProxy статистика бэкэнд # ------------------------------------------------- -------------------- прослушать haproxy3-мониторинг *: 80 режим http опция forwardfor кроме 127.0.0.1 вариант httpclose статистика включена статистика шоу-легенд обновление статистики 5с статистика URI / статистика статистика царства Haproxy \ Статистика stats auth username: пароль статистика админ если ИСТИНА # ------------------------------------------------- -------------------- # главный интерфейс, который прокси к бэкэндам # ------------------------------------------------- -------------------- главный интерфейс связать *: 80 default_backend webapp-main # круговой баланс между различными бэкэндами # ------------------------------------------------- -------------------- backend webapp-main баланс раундробин опция httpchk HEAD / HTTP / 1.1 \ r \ nHost: \ example.uni.edu сервер web1 10.10.1.21:80 проверка сервер web2 10.10.1.22:80 проверка
web1 nginx — /etc/nginx/conf.d/default.conf
сервер { слушать 80; имя_сервера 10.10.1.21; # обратите внимание, что эти строки изначально из блока "location /" root / usr / share / nginx / html; index index.php index.html index.htm; место нахождения / { try_files $ uri $ uri / = 404; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root / usr / share / nginx / html; } location ~ [^ /] \. php (/ | $) { fastcgi_split_path_info ^ (. + \. php) (/.+) $; fastcgi_index index.php; fastcgi_pass unix: /var/run/php-fpm/php-fpm.sock; включить fastcgi_params; fastcgi_param PATH_INFO $ fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; } местоположение / dataroot / { внутренний; псевдоним / var / moodledata /; # убедитесь, что путь заканчивается на / } location / cachedir / { внутренний; псевдоним / var / moodledata / cache /; # убедитесь, что путь заканчивается на / } location / localcachedir / { внутренний; псевдоним / var / moodledata / localcache /; # убедитесь, что путь заканчивается на / } location / tempdir / { внутренний; псевдоним / var / moodledata / temp /; # убедитесь, что путь заканчивается на / } location / filedir / { внутренний; псевдоним / var / moodledata / filedir /; # убедитесь, что путь заканчивается на / } }
У web2 те же конфиги, что и у web1, и собственный локальный ip.
Когда я указываю прямо на index.php http://10.10.1.18/index.php он загружает файл index.php и дает
сервис 503 недоступен
У кого-нибудь есть подобные проблемы с опытом?
Наконец, это сработало, пожалуйста, выполните следующие действия:
# Для получения дополнительной информации о конфигурации см .: # * Официальная документация на английском языке: http://nginx.org/en/docs/ # * Официальная русская документация: http://nginx.org/ru/docs/ пользователь nginx; рабочий_процессы авто; error_log /var/log/nginx/error.log; pid /run/nginx.pid; События { работники_соединения 8192; } http { log_format main '$ remote_addr - $ remote_user [$ time_local] "$ request"' '$ status $ body_bytes_sent "$ http_referer"' '"$ http_user_agent" "$ http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; tcp_nopush on; sendfile on; keepalive_timeout 65; types_hash_max_size 2048; client_body_buffer_size 10K; client_header_buffer_size 1k; client_max_body_size 512m; large_client_header_buffers 2 1k; client_body_timeout 1200; client_header_timeout 1200; send_timeout 100; include /etc/nginx/mime.types; default_type application / octet-stream; сервер { слушать 80; имя_сервера example.uni.edu; # обратите внимание, что эти строки изначально из блока "location /" root / usr / share / nginx / html; index index.php index.html index.htm; место нахождения / { root / usr / share / nginx / html; try_files $ uri $ uri / = 404; index index.php; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root / usr / share / nginx / html; } location ~ [^ /] \. php (/ | $) { root / usr / share / nginx / html; fastcgi_split_path_info ^ (. + \. php) (/.+) $; fastcgi_index index.php; fastcgi_pass unix: /var/run/php-fpm/php-fpm.sock; #fastcgi_pass 127.0.0.1:9000; включить fastcgi_params; fastcgi_param PATH_INFO $ fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; } ###################### Для приложения Moodle ################## местоположение / dataroot / { внутренний; псевдоним / var / moodledata /; # убедитесь, что путь заканчивается на / } location / cachedir / { внутренний; псевдоним / var / moodledata / cache /; # убедитесь, что путь заканчивается на / } location / localcachedir / { внутренний; псевдоним / var / moodledata / localcache /; # убедитесь, что путь заканчивается на / } location / tempdir / { внутренний; псевдоним / var / moodledata / temp /; # убедитесь, что путь заканчивается на / } location / filedir / { внутренний; псевдоним / var / moodledata / filedir /; # убедитесь, что путь заканчивается на / } ###################### Для приложения Moodle ################## } }
# ------------------------------------------------- -------------------- # Пример конфигурации для возможного веб-приложения. Увидеть # полная настройка параметров онлайн. # # http://haproxy.1wt.eu/download/1.4/doc/configuration.txt # # ------------------------------------------------- -------------------- # ------------------------------------------------- -------------------- # Глобальные настройки # ------------------------------------------------- -------------------- Глобальный # чтобы эти сообщения попали в /var/log/haproxy.log, вы будете # нужно: # # 1) настроить системный журнал для приема событий сетевого журнала. Готово # добавив опцию '-r' к SYSLOGD_OPTIONS в # / etc / sysconfig / syslog # # 2) настроить события local2 для перехода на /var/log/haproxy.log # файл. Строка, подобная следующей, может быть добавлена к # / etc / sysconfig / syslog # # local2. * /var/log/haproxy.log # log 127.0.0.1 local2 chroot / var / lib / haproxy pidfile /var/run/haproxy.pid максконн 10000 пользователь haproxy группа haproxy демон # включить стат Unix сокет сокет статистики / var / lib / haproxy / stats # ------------------------------------------------- -------------------- # общие значения по умолчанию, что все секции 'listen' и 'backend' будут #use, если не указано в их блоке # ------------------------------------------------- -------------------- по умолчанию режим http журнал глобальный вариант httplog вариант не может опция http-server-close опция forwardfor кроме 127.0.0.0/8 опция повторная отправка повторяет 3 тайм-аут http-запроса 10с время ожидания 1м тайм-аут подключения 10с тайм-аут клиента 1м тайм-аут сервера 1м тайм-аут http-keep-alive 10с проверка тайм-аута 10с максконн 10000 # ------------------------------------------------- -------------------- #HAProxy статистика бэкэнд # ------------------------------------------------- -------------------- прослушивать haproxy3-мониторинг *: 8080 режим http опция forwardfor вариант httpclose статистика включена статистика шоу-легенд обновление статистики 5с статистика URI / статистика статистика царства Haproxy \ Статистика stats auth username: пароль статистика админ если ИСТИНА # ------------------------------------------------- -------------------- # главный интерфейс, который прокси к бэкэндам # ------------------------------------------------- -------------------- главный интерфейс связать *: 80 опция http-server-close опция forwardfor default_backend webapp-main # круговой баланс между различными бэкэндами # ------------------------------------------------- -------------------- backend webapp-main источник баланса опция httpchk HEAD / HTTP / 1.1 \ r \ nHost: \ example.uni.edu сервер web1 10.10.1.21:80 проверка сервер web2 10.10.1.22:80 проверка
Вы также можете просмотреть свое приложение http://example.uni.edu
Примечание: Убедитесь, что вы публично указываете ip на ваш haproxy сервер!
Других решений пока нет …