我有以下Nginx配置文件......
bubbleDown
文件夹结构就是这样......
HTML \ APP1
HTML \共同
当我尝试浏览时...
http://localhost/>作品
http://localhsot/index.html>作品
http://localhost/common/somefile.txt>不起作用
我错过了什么?
答案 0 :(得分:2)
您应该使用alias
代替root
:
server {
listen 80;
server_name 127.0.0.1 localhost;
location / {
root /etc/nginx/html/app1;
index index.html;
}
location /common {
alias /etc/nginx/html/common;
}
}
如果您在root
中使用common
,127.0.0.1/common/somefile.txt
会尝试/etc/nginx/html/common/common/somefile.txt
(请注意两个common
)。如果您查看nginx
的日志,就可以看到它。
答案 1 :(得分:1)
我正在添加自己的答案,因为我终于开始工作了。将它发布在这里,这可能对其他人有帮助......
server {
listen 80;
server_name 127.0.0.1 localhost;
location = /index.html {
root /etc/nginx/html/app1;
index index.html;
}
location / {
root /etc/nginx/html/app1;
index index.html;
}
location ^~ /common/ {
root /etc/nginx/html;
}
}
基本上,Nginx尝试的方式是/ etc / nginx / html / common / common。从root工作中删除公共。还发现http://localhost:8888/common/需要尾随/.
答案 2 :(得分:0)
因为它首先匹配location /
。你可以这样做:
server {
listen 80;
server_name 127.0.0.1 localhost;
location = /index.html {
root /etc/nginx/html/app1;
index index.html;
}
location / {
root /etc/nginx/html/app1;
index index.html;
}
location ^~ /common/ {
root /etc/nginx/html/common;
}
}
修改强>
是啊。看起来有些复杂。你可以这样做:
首先,您需要创建一个新服务器:
server {
listen 80;
server_name common.com; # A virtual host
root /etc/nginx/html/common;
}
然后,您需要修改上面的配置,如下所示:
server {
listen 80;
server_name 127.0.0.1 localhost;
location = /index.html {
root /etc/nginx/html/app1;
index index.html;
}
location / {
root /etc/nginx/html/app1;
index index.html;
}
location ^~ /common/ {
rewrite ^/common(/.*)$ $1 break; # rewrite the /common/
proxy_set_header Host common.com; # it will requests common.com which the server of 127.0.0.1. then will match the above server.
proxy_pass http://127.0.0.1;
}
}