如何配置Nginx实现子路径/mysite访问本地目录网页?
修改方案说明
你需要在监听443的server块中,在原有的location /配置之前新增一个匹配/mysite路径的location块,具体修改后的完整配置如下:
server { server_name subdomain.mydomain.com; listen 443 ssl http2; listen [::]:443 ssl http2; ssl on; ssl_certificate /etc/letsencrypt/live/subdomain.mydomain.com/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/subdomain.mydomain.com/privkey.pem; # managed by Certbot index index.html index.htm; # 新增的/mysite路径配置 location ^~ /mysite { alias /var/www/html; index index.html index.htm; try_files $uri $uri/ =404; } location / { proxy_pass http://localhost:3000/; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto "https"; } } server { listen 80 default_server; server_name _; return 301 https://$host$request_uri; }
关键修改点解释
location ^~ /mysite:^~表示前缀匹配,优先级高于普通正则匹配,确保访问/mysite开头的路径时,优先走这个静态文件配置,不会被后面的location /代理到Grafana。alias /var/www/html:将/mysite路径直接映射到服务器本地的/var/www/html目录。如果用root替代alias,Nginx会去读取/var/www/html/mysite下的文件,不符合你的需求,因此必须用alias。try_files $uri $uri/ =404:尝试按请求路径查找文件,找不到则尝试查找对应目录(比如访问/mysite/时自动加载目录下的index文件),都找不到就返回404,避免出现异常跳转。
后续操作
- 确保Nginx进程对
/var/www/html目录有读取权限,可执行:chmod -R 755 /var/www/html chown -R www-data:www-data /var/www/html - 检查配置语法:
nginx -t - 重载Nginx生效:
systemctl reload nginx
内容的提问来源于stack exchange,提问作者Helyx
相关产品推荐
相关产品推荐

