Страница 1 из 1
Как настроить связку Nginx + Apache правильно?
Добавлено: 2020-12-16 12:29:00
Ivan-R
Здравствуйте коллеги,
Объясните мне пожалуйста, как корректно настроить связку Nginx + Apache с несколькими сайтами на разных портах.
Я настраиваю ее впервые и не могу понять как это сделать правильно.
Скажем на Apache у меня есть два web-сервиса работающих на разных портах (8855 и 8836), как мне их пробросить в Nginx так, чтобы еще и стартовую страницу Apache видеть тоже?
Конечно в интернете полно описаний, все пишут "измените VirtualHost на *:8080", но тогда сайты, кроме стартовой страницы Apache, перестают работать.
Что не так? Как правильно?
Как настроить связку Nginx + Apache правильно?
Добавлено: 2020-12-16 19:24:29
guest
Что не так? Как правильно?
не так - это то что Вы не понимаете как работает Apache.
Разберитесь как работает Apache, потом разберитесь как работает Nginx
и уж потом станет понятно, как и для чего nginx используют как
front-end к apache.
Скажем на Apache у меня есть два web-сервиса работающих на разных портах (8855 и 8836), как мне их пробросить в Nginx так, чтобы еще и стартовую страницу Apache видеть тоже?
делают ровно наоборот.
Чтобы понять как работает Apache и Virtual-Host в нем, нужно знать как работает DNS
и тогда не будет никаких проблем:
https://httpd.apache.org/docs/2.4/vhosts/index.html
по ссылке расписаны обе технологии и плюс примеры использования:
https://httpd.apache.org/docs/2.4/vhosts/examples.html
Если прочитаете внимательно, все поймете, не будете читать, так и будете мыкаться по форумам
и получать полу-ответы и полу-меры...
две технологии:
- Name-based Virtual Hosts (позволяет использовать много web-сайтов на одном ip-адресе)
для этого требуется в DNS настроить RR=A для каждого сайта.
- IP-based Virtual Hosts (для каждого сайта ОДИН выделенный ip-адрес)
Смешанный вариант: в одной конфигурации name-based и ip-based сайты
Как настроить связку Nginx + Apache правильно?
Добавлено: 2020-12-21 23:19:52
wien
Front-End: Nginx, прослушиваемые порты 80, 443.
Код: Выделить всё
server {
listen 80;
server_name mysite.ru www.mysite.ru;
root /var/www/sites/shops/www/mysite.ru;
return 301 https://mysite.ru$request_uri;
}
server {
listen 443;
# Server name and alias
server_name mysite.ru www.mysite.ru;
# SSL support
ssl on;
ssl_certificate /etc/letsencrypt/live/mysite.ru/cert.pem;
ssl_certificate_key /etc/letsencrypt/live/mysite.ru/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 10m;
client_body_buffer_size 8k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_send_lowat 0;
proxy_buffer_size 4k;
proxy_buffers 8 4k;
proxy_busy_buffers_size 8k;
proxy_temp_file_write_size 8k;
}
# Static content
location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|mp3|bmp|flv|rtf|js|swf|iso)$ {
root /var/www/sites/shops/www/mysite.ru;
access_log off;
expires 1d;
}
# Deny access to .htpasswd files
location ~ /\.ht {
deny all;
access_log off;
log_not_found off;
}
# Logs
access_log off;
error_log /var/www/sites/shops/log/nginx_error.log;
}
Back-End: Apache, висит на localhost, т.е. 127.0.0.1, слушает порт 8080:
Код: Выделить всё
<VirtualHost 127.0.0.1:8080>
ScriptAlias /cgi-bin/ /var/www/sites/shops/cgi-bin/
ServerAdmin support@mysite.ru
SuexecUserGroup shops shops
DocumentRoot /var/www/sites/shops/www/mysite.ru
ServerName mysite.ru
ServerAlias www.mysite.ru
SetEnvIf X-Forwarded-Proto https HTTPS=on
<Directory /var/www/sites/shops/www/mysite.ru>
Options -Indexes +FollowSymLinks +ExecCGI
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
AllowOverride All
Require all granted
</Directory>
<Directory /var/www/sites/shops/cgi-bin>
AllowOverride None
Options None
Require all granted
</Directory>
DirectoryIndex index.php index.html index.htm index.shtml
ErrorLog /dev/null
</VirtualHost>
Пример реально рабочий, предварительно обезличенный
Чтобы апач слушался как у меня и прочие фишки работали, в конфиге httpd.conf должны быть такие строки:
Код: Выделить всё
Listen 127.0.0.1:8080
LoadModule rpaf_module libexec/apache24/mod_rpaf.so
ServerName 127.0.0.1:8080
# For security. Hide version
ServerSignature Off
ServerTokens Prod
# Enable RPAF module
RPAFenable On
# Set hostname transmit
RPAFsethostname On
# Front-end address
RPAFproxy_ips 127.0.0.1
# Header name
RPAFheader X-Real-IP
Как настроить связку Nginx + Apache правильно?
Добавлено: 2021-05-05 17:10:34
Ivan-R
guest писал(а): ↑2020-12-16 19:24:29
не так - это то что Вы не понимаете как работает Apache.
Разберитесь как работает Apache, потом разберитесь как работает Nginx
и уж потом станет понятно, как и для чего nginx используют как
front-end к apache.
... и т.д.
Пока ожидал ответов на свой вопрос сам нашел решение. Но какое уже не помню.
Как настроить связку Nginx + Apache правильно?
Добавлено: 2021-05-05 17:13:02
Ivan-R
wien писал(а): ↑2020-12-21 23:19:52
Пример реально рабочий, предварительно обезличенный
Хоть уже и не нужно, все равно спасибо (может еще кому-то поможет)
Как настроить связку Nginx + Apache правильно?
Добавлено: 2021-07-22 12:08:45
Гость
ну теперь думаю надо вам идти дальше и исключить из этой связки вообще апач
Как настроить связку Nginx + Apache правильно?
Добавлено: 2022-07-16 5:30:26
darkfire
Для нового проекта можно и исключить Apache и запускаться только на Nginx. Но существующий проект не советую, на том же wordpress некоторые плагины достаточно трудно запустить на голом Nginx.