#nginx
#nginx
Вопрос:
Есть ли какой-либо способ, которым я могу использовать один поддомен / домен, т. mysub.domain.com
е. domain.com
для обслуживания нескольких веб-сайтов на разных портах?
Я использую nginx, и ниже приведена моя конфигурация для локальной разработки.
server {
listen 1900;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root D:testwebsite;
index index.html index.htm;
expires -1;
add_header Pragma "no-cache";
add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0";
try_files $uri$args $uri$args/ $uri $uri/ /index.html =404;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root D:prodwebsite;
index index.html index.htm;
expires -1;
add_header Pragma "no-cache";
add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0";
try_files $uri$args $uri$args/ $uri $uri/ /index.html =404;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ .php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ .php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /.ht {
# deny all;
#}
}
Согласно конфигурации, в настоящее время я обслуживаю два разных веб-сайта: prod (порт 80) и test (порт 1900). Можно ли это сделать с помощью домена или поддомена?
Я никогда раньше не делал этого с поддоменом / доменом, поэтому я не совсем уверен, как это работает. Я проводил некоторые исследования, но просто не мог полностью понять это.
Комментарии:
1. Вы, конечно, можете — точно так же, как вы это уже делали. Просто добавьте больше
server
блоков, каждый на другом порту. У вас могут быть как разные порты в одном домене / поддомене, так и разные домены / поддомены на одном порту.2. Итак, вы хотите сказать, что если у меня есть поддомен, например
test.domain.com
, я могу обслуживать два веб-сайта, один дляtest.domain.com
, а другой дляtest.domain.com:1900
?3. Если не используется SSL, оба сервера могут (и должны) прослушивать порт 80, нет необходимости использовать другой. Два разных веб-сайта означают две разные исходные папки, поэтому, если, например, используется test
root D:testwebsite;
, prod должен использовать другую папку, напримерroot D:prodwebsite;
. Кроме того,server_name
директива должна быть разной для каждого сервера:server_name domain.com;
иserver_name mysub.domain.com;
.4. Да — до тех пор, пока вы получаете доступ к своим веб-сайтам через соответствующий порт (указанный в URL-адресе), он будет работать. Если вы не укажете порт в URL-адресе — браузер будет использовать порт 80 для
http
и 443 дляhttps
URL-адресов.