nginx - 如何为同一域上的多个站点配置 Nginx?
问题描述
我在服务器配置方面真的很新手,我想在同一个域上为多个站点提供服务,如下所示:
example.com/site1 -> /var/www/example.com/site1/html/
example.com/site2 -> /var/www/example.com/site2/html/
example.com/site3 -> /var/www/example.com/site3/html/
等等
我的目的是让在同一个域上拥有完全不同的站点(PHP 上的 site1,python 上的 site2 等)成为可能,但路径不同。
应为所有站点启用 HTTPS。
我从一个目前仅使用 statiс 的站点开始:
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
set $base /var/www/example.com;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log warn;
# Open index.html for example.com/site1
location = /site1 {
alias $base/site1/html;
index index.html;
try_files $uri $uri/ =404;
}
location /site1/ {
alias $base/site1/html/;
index index.html;
try_files $uri $uri/ =404;
access_log /var/log/nginx/example.com/site1/access.log;
error_log /var/log/nginx/example.com/site1/error.log warn;
}
}
但即使使用这个简单的配置,我也有一些问题:
- 出于某种原因,它在没有 SSL 配置的情况下通过 HTTPS 工作,但是当我启用它时,我对任何请求都有 502。
- https://example.com/site1重定向到http://example.com/site1/然后重定向到https://example.com/site1/,但我不想要它。我根本不想要斜杠。
- 我不知道如何在不使用绝对 URL 的情况下从前端加载静态。例如,如果我在 site1 上,那么请求 /css/styles.css 实际上应该转到https://example.com/site1/css/styles.css。
非常感谢您的帮助!
解决方案
推荐阅读
- design-patterns - 使用多态性替换空检查
- sql - 成对比较预言机
- reactjs - 从 navigationOptions 中的另一个组件/类访问状态
- c++ - 无法使用 std::atomic 编译
作为班级成员 - jquery-ui-dialog - 在对话框打开处理程序中仅查找当前 jQueryUI 对话框的内容
- html - mathjax中的html标签
- ruby-on-rails - 3 个表相互交互,但患者 ID 返回 nil
- javascript - 在生产中在 catch 块中放入什么
- javascript - JavaScript 字母排序不是对所有值进行排序
- dictionary - Data.Map中的map函数与fromList函数的连接