我是 nginx 的新手,我想实现的目标是:
- 我只有一个域名。
- 我想要有多个应用程序,可以通过以下方式访问:mydomain.com/app1 mydomain.com/app2 等
因此我最终得到了如下配置:
server {
listen 80;
server_name mydomain.com;
location ~ /site1 {
alias /srv/http/site1;
index home.html;
}
# fallback if no application is passed as argument
location / {
alias /srv/http/default;
index index.html;
}
}
但是,我只收到 403 错误。
我的目录归 nginx 用户 (http) 所有,为确保不是权限问题,我把所有内容的所有权都改为 777(只是为了测试,不用担心 ;))。
任何想法 ?
编辑:感谢 Florin Asavoaie,我得到了一些工作:
诀窍是什么:
- 删除位置中的 ~
- 用 root 替换第二个别名(但是,第一个别名似乎是需要的..)。
所以我有这个配置工作:
server {
listen 80;
server_name mydomain.com;
location /site1 {
alias /srv/http/site1;
index home.html;
}
location / {
root /srv/http/default;
index index.html;
}
}
答案1
检查错误日志,它会告诉你为什么输出 403 错误。
Alias 会根据 URL 进行替换,而不是根据服务器路径。请使用
root
指令来执行您想要的操作。删除位置定义中的 ~ ,即用
location /site1
代替location ~ /site1
,它具有更好的性能并且可以避免其他类型的问题。仅在需要正则表达式时才使用 ~ 。