Я хочу настроить Nginx для маршрутизации нескольких проектов на локальном хосте, не касаясь файла hosts
на моем компьютере.
Т.е. Nginx должен обрабатывать хотя бы пути
http://localhost/project-one
http://localhost/project-two
Я нашел один пример но в моем случае это не сработает:
# /etc/nginx/conf.ddefault.conf
server {
listen 80;
# server_name localhost;
index index.html index.htm;
location ~ ^/project-one {
root /usr/share/nginx/html/project-one;
# index index.html index.htm;
}
location ~ ^/project-two {
root /usr/share/nginx/html/project-two;
# index index.html index.htm;
}
#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 /usr/share/nginx/html;
}
}
Работает, если я установил только один location
равным всего лишь sh и требуется root
:
# /etc/nginx/conf.ddefault.conf
server {
listen 80;
# server_name localhost;
index index.html index.htm;
location / {
root /usr/share/nginx/html/project-one;
# index index.html index.htm;
}
}
С этой конфигурацией он показывает html файл из каталога project-one
в http://localhost
.
Я использую Docker для тестирования:
docker run --rm --name my-nginx -p 80:80 -v $(pwd)/sites:/etc/nginx/conf.d -v $(pwd)/html:/usr/share/nginx/html -d nginx
Таким образом, я могу изменить файл default.conf
для папки Nginx и html
в локальных каталогах соответственно, а затем перезапустить: docker restart my-nginx
Как правильно настроить несколько местоположений для нескольких корни не трогая hosts
файл?