Как разместить несколько сайтов на одном ip?
Допустим у вас возникла необходимость на своем веб-сервере(приложений) разместить несколько сайтов. Как это сделать? Тут нам на помощь приходит NGINX.
nginx [engine x] — это HTTP-сервер и обратный прокси-сервер, почтовый прокси-сервер, а также TCP/UDP прокси-сервер общего назначения, изначально написанный Игорем Сысоевым. Уже длительное время он обслуживает серверы многих высоконагруженных российских сайтов, таких как Яндекс, Mail.Ru, ВКонтакте и Рамблер. Согласно статистике Netcraft nginx обслуживал или проксировал 24.86% самых нагруженных сайтов в феврале 2016 года. Вот некоторые примеры успешного внедрения nginx (тексты на английском языке): Netflix, WordPress.com, FastMail.FM.
Особо в тонкости вдаваться не будем, разберем алгоритм и простой конфиг с двумя сайтами.
Удаляем файлы конфигов /etc/nginx/site-available/
sudo rm -r /etc/nginx/site-available/
Создаем конфиг default в /etc/nginx/site-available/
sudo touch /etc/nginx/site-available/default
В конфиг прописываем настройки(ниже);
server { listen 80 default; server_name site1.ru; location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ { root /var/www/site1.ru; index index.html index.php; access_log off; expires 30d; error_page 404 = @fallback; proxy_cache_valid 404 1m; } location ~ /\.ht { deny all; } location / { proxy_pass https://127.0.0.1:8080/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-for $remote_addr; proxy_set_header Host $host; proxy_connect_timeout 60; proxy_send_timeout 90; proxy_read_timeout 90; proxy_redirect off; proxy_set_header Connection close; proxy_pass_header Content-Type; proxy_pass_header Content-Disposition; proxy_pass_header Content-Length; } location @fallback { proxy_pass https://127.0.0.1:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-for $remote_addr; proxy_set_header Host $host; } } server { listen 80 default; server_name site2.ru; location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ { root /var/www/site2.ru; index index.html index.php; access_log off; expires 30d; error_page 404 = @fallback; proxy_cache_valid 404 1m; } location ~ /\.ht { deny all; } location / { proxy_pass https://127.0.0.1:8080/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-for $remote_addr; proxy_set_header Host $host; proxy_connect_timeout 60; proxy_send_timeout 90; proxy_read_timeout 90; proxy_redirect off; proxy_set_header Connection close; proxy_pass_header Content-Type; proxy_pass_header Content-Disposition; proxy_pass_header Content-Length; } location @fallback { proxy_pass https://127.0.0.1:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-for $remote_addr; proxy_set_header Host $host; } }
Делаем симплинк:
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
Рестартим nginx
sudo service nginx restart