Nginx:本地主机上的路由
Nginx: route on localhost
我想配置 Nginx 以在不接触的情况下在本地主机上路由多个项目
hosts
我电脑上的文件。
即Nginx 应该至少处理路径
我找到了一个 但它对我不起作用:
# /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
设置为一个斜线并且需要 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;
}
}
使用此配置,它显示 http://localhost
上 project-one
目录中的 html 文件。
我正在使用 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
所以我可以分别更改 Nginx 的 default.conf
文件和本地目录中的 html
文件夹,然后重新启动:docker restart my-nginx
如何在不触及 hosts
文件的情况下为多个根正确配置多个位置?
好的,终于明白了...
server {
listen 80;
# server_name localhost;
index index.html index.htm;
location ~ ^/project-one {
root /usr/share/nginx/html;
# index index.html index.htm;
}
location ~ ^/project-two {
root /usr/share/nginx/html;
# index index.html index.htm;
}
}
现在一切如我所愿:
http://localhost/project-one
http://localhost/project-two
每个请求路由到相对不同的文件夹:
/usr/share/nginx/html/project-one/index.html
/usr/share/nginx/html/project-two/index.html
感谢@RichardSmith。
我想配置 Nginx 以在不接触的情况下在本地主机上路由多个项目
hosts
我电脑上的文件。
即Nginx 应该至少处理路径
我找到了一个
# /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
设置为一个斜线并且需要 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;
}
}
使用此配置,它显示 http://localhost
上 project-one
目录中的 html 文件。
我正在使用 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
所以我可以分别更改 Nginx 的 default.conf
文件和本地目录中的 html
文件夹,然后重新启动:docker restart my-nginx
如何在不触及 hosts
文件的情况下为多个根正确配置多个位置?
好的,终于明白了...
server {
listen 80;
# server_name localhost;
index index.html index.htm;
location ~ ^/project-one {
root /usr/share/nginx/html;
# index index.html index.htm;
}
location ~ ^/project-two {
root /usr/share/nginx/html;
# index index.html index.htm;
}
}
现在一切如我所愿:
http://localhost/project-one
http://localhost/project-two
每个请求路由到相对不同的文件夹:
/usr/share/nginx/html/project-one/index.html
/usr/share/nginx/html/project-two/index.html
感谢@RichardSmith。