这个需求其实非常的自然而然,我刚学会nginx反向代理部署服务的时候,就有这个需求:我就这一个域名,我怎么在这个域名下,部署我的多项服务?

二级访问目录

二级访问目录并不是一个好方法,主要是因为直接对该域名下的目录进行了绑定,对绑定在根域名上的服务很不利,容易造成污染。

最开始我采用的是这种方法,好处就是做SSL的时候,实际上每项服务实际上都部署在同一个域名下,SSL无需绑定泛域名。

server {
	# 其他配置
	...
	
	# Nextcloud 网盘 为例
	location /nextcloud/ {
					# 反向代理到nextcloud服务
					proxy_pass http://127.0.0.1:8248/; # 最后的/很重要
					proxy_set_header HOST $host;
					proxy_set_header X-Forwarded-Proto $scheme;
					proxy_set_header X-Real-IP $remote_addr;
					proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	}
}

子域名

这种方式应该是常用的一种方式,比如:https://www.163.com/https://mail.163.com/https://music.163.com/用子域名的方式同时提供了多项服务。

我目前服务器上的服务基本都采用这种方式通过nginx反向代理,不方便的地方就是需要为子域名单独配置SSL,由于目前貌似只有  Cloudflare 提供免费的泛域名SSL证书,所以其实我的主要域名都全面转向Cloudflare了😄。

server {
	# 其他配置
	server_name cloud.example.com;

	# Nextcloud 网盘 为例
	location / {
					# 反向代理到nextcloud服务
					proxy_pass http://127.0.0.1:8248/;
					proxy_set_header HOST $host;
					proxy_set_header X-Forwarded-Proto $scheme;
					proxy_set_header X-Real-IP $remote_addr;
					proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	}
}