我需要通过我的应用服务器提供我的应用程序8080,以及来自目录的静态文件,而无需触及应用服务器.我拥有的nginx配置是这样的......
# app server on port 8080
# nginx listens on port 8123
server {
listen 8123;
access_log off;
location /static/ {
# root /var/www/app/static/;
alias /var/www/app/static/;
autoindex off;
}
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,使用此配置,一切正常.请注意,该root指令已被注释掉.
如果我激活root和停用alias- 它会停止工作.但是,当我/static/从root它删除尾随它开始再次工作.
有人可以解释发生了什么.还请解释清楚和冗长之间有什么区别root和alias和它们的用途.
我有3个域名,我正在尝试使用Nginx在一台服务器(数字海洋液滴)上托管所有3个站点.
mysite1.name mysite2.name mysite3.name
其中只有一个有效.另外两个导致403错误(以相同的方式).
在我的nginx错误日志中,我看到:[error] 13108#0: *1 directory index of "/usr/share/nginx/mysite2.name/live/" is forbidden.
我的网站启用配置是:
server {
server_name www.mysite2.name;
return 301 $scheme://mysite2.name$request_uri;
}
server {
server_name mysite2.name;
root /usr/share/nginx/mysite2.name/live/;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ /index.html index.php;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
Run Code Online (Sandbox Code Playgroud)
所有3个站点都有几乎相同的配置文件.
每个站点的文件都在/usr/share/nginx/mysite1.name/someFolder等文件夹中,然后/usr/share/nginx/mysite1.name/live是一个符号链接.(与mysite2和mysite3相同.)
我看过禁止所有文件的Nginx 403,但这没有用.
关于可能出错的任何想法?
我正在为angular同一个server街区提供多个应用程序Nginx.因此,为了让用户直接浏览Angular我声明的某些自定义路线而不必通过主页(并避免404页面),我将这些路由从nginx转发到每个角度应用程序index.html,我添加了a try_files到每个location:
server {
listen 80;
server_name website.com;
# project1
location / {
alias /home/hakim/project1/dist/;
try_files $uri /index.html;
}
# project2
location /project2/ {
alias /home/hakim/project2/dist/;
try_files $uri /index.html;
}
# project3
location /project3/ {
alias /home/hakim/project3/dist/;
try_files $uri /index.html;
}
}
Run Code Online (Sandbox Code Playgroud)
这个解决方案在转到Angular路由时避免了404错误,但问题是当我浏览/project2/或/project3/重定向到/project1/.这显然不是预期的,因为我希望每个位置都转发到/project-i/index.html适当的项目.