fix: support remote_url proxy pass

This commit is contained in:
2026-03-05 11:31:39 +00:00
parent 1d4b720cee
commit 7905ca68a9
2 changed files with 17 additions and 5 deletions

View File

@@ -36,19 +36,27 @@ server{
} }
{% endif %} {% endif %}
{% if remote_url %}
location / {
proxy_pass {{ remote_url }};
proxy_ssl_server_name on;
proxy_set_header Host $proxy_host;
}
{% else %}
location / { location / {
proxy_pass http://{{ targetip }}:{{ targetport }}; proxy_pass http://{{ targetip }}:{{ targetport }};
proxy_set_header Host $http_host; proxy_set_header Host $http_host;
{% if extra_location["location"] == "/" %} {% if extra_location["location"] == "/" %}
{{ extra_location["content"] }} {{ extra_location["content"] }}
{% endif %} {% endif %}
{{ proxy_pass_blob }}
{{ cert_header_line }} {{ cert_header_line }}
{{ proxy_pass_blob }}
{% if basicauth %} {% if basicauth %}
auth_basic "{{ basicauth }}"; auth_basic "{{ basicauth }}";
auth_basic_user_file /etc/nginx/{{ basicauth }}.htpasswd; auth_basic_user_file /etc/nginx/{{ basicauth }}.htpasswd;
{% endif %} {% endif %}
} }
{% endif %}
} }
{% endif %} {% endif %}

4
vm.py
View File

@@ -172,10 +172,14 @@ class VM:
print(json.dumps(subdomain, indent=2)) print(json.dumps(subdomain, indent=2))
raise ValueError("'port' is not allowed with no-terminate-ssl subdomain, use http_target_port and ssl_target_port") raise ValueError("'port' is not allowed with no-terminate-ssl subdomain, use http_target_port and ssl_target_port")
if "port" in subdomain and "remote_url" in subdomain:
raise ValueError("'port' is unsupported with 'remote_url', remote_url must container scheme://host:port all in one")
component = template.render(targetip=self.ip, targetport=targetport, component = template.render(targetip=self.ip, targetport=targetport,
servernames=[subdomain["name"]], comment=compositeName, servernames=[subdomain["name"]], comment=compositeName,
proxy_pass_blob=self.proxy_pass_blob, proxy_pass_blob=self.proxy_pass_blob,
acme=not self.noTerminateACME, acme=not self.noTerminateACME,
remote_url=subdomain.get("remote_url"),
terminate_ssl=not subdomain.get("no-terminate-ssl"), terminate_ssl=not subdomain.get("no-terminate-ssl"),
basicauth=subdomain.get("basicauth"), basicauth=subdomain.get("basicauth"),
extra_location=subdomain.get("extra-location"), extra_location=subdomain.get("extra-location"),