diff --git a/roles/vhost/defaults/main.yaml b/roles/vhost/defaults/main.yaml index d48ace0..eb4c1ad 100644 --- a/roles/vhost/defaults/main.yaml +++ b/roles/vhost/defaults/main.yaml @@ -14,6 +14,7 @@ vhost_basicauth_users: {} vhost_proxy_target_netproto: tcp vhost_proxy_target_protocol: http vhost_proxy_target_host: localhost +vhost_proxy_method: "" vhost_proxy_headers: {} vhost_proxy_delete_headers: [] vhost_proxy_pass_host_header: true diff --git a/roles/vhost/meta/argument_specs.yaml b/roles/vhost/meta/argument_specs.yaml index 6e2a6d4..3283165 100644 --- a/roles/vhost/meta/argument_specs.yaml +++ b/roles/vhost/meta/argument_specs.yaml @@ -103,6 +103,15 @@ argument_specs: - Only applicable if vhost_type is reverse_proxy and vhost_proxy_target_netproto is unix. type: str required: false + vhost_proxy_method: + description: Method to set for proxied requests + type: str + required: false + default: "" + choices: + - "" + - GET + - POST vhost_proxy_headers: description: Dict of request headers and their values to set for proxied requests type: dict @@ -287,6 +296,15 @@ argument_specs: type: str required: false default: "{{ vhost_proxy_target_socket if vhost_type == 'reverse_proxy' and vhost_proxy_target_netproto == 'unix' else '' }}" + proxy_method: + description: Method to set for proxied requests + type: str + required: false + default: "{{ vhost_proxy_method }}" + choices: + - "" + - GET + - POST proxy_headers: description: Dict of request headers and their values to set for proxied requests type: dict @@ -450,6 +468,15 @@ argument_specs: type: str required: false default: "{{ vhost_proxy_target_socket if vhost_type == 'reverse_proxy' and vhost_proxy_target_netproto == 'unix' else '' }}" + proxy_method: + description: Method to set for proxied requests + type: str + required: false + default: "{{ vhost_proxy_method }}" + choices: + - "" + - GET + - POST proxy_headers: description: Dict of request headers and their values to set for proxied requests type: dict @@ -629,6 +656,14 @@ argument_specs: - Only applicable if type is reverse_proxy and proxy_target_netproto is unix. type: str required: false + proxy_method: + description: Method to set for proxied requests + type: str + required: false + choices: + - "" + - GET + - POST proxy_headers: description: Dict of request headers and their values to set for proxied requests type: dict diff --git a/roles/vhost/templates/Caddyfile_block.j2 b/roles/vhost/templates/Caddyfile_block.j2 index 8269591..6a15c1d 100644 --- a/roles/vhost/templates/Caddyfile_block.j2 +++ b/roles/vhost/templates/Caddyfile_block.j2 @@ -59,6 +59,9 @@ {% endif %} } {% endif %} + {% if matcher.proxy_method | length > 0 %} + method {{ matcher.proxy_method }} + {% endif %} {% for header in matcher.proxy_delete_headers %} header_up -{{ header }} {% endfor %} diff --git a/roles/vhost/vars/main.yaml b/roles/vhost/vars/main.yaml index e027590..43a1062 100644 --- a/roles/vhost/vars/main.yaml +++ b/roles/vhost/vars/main.yaml @@ -25,6 +25,7 @@ _vhost_location_defaults: vhost_type == 'reverse_proxy' and vhost_proxy_target_netproto == 'tcp' else '' }}" proxy_target_socket: "{{ vhost_proxy_target_socket if vhost_type == 'reverse_proxy' and vhost_proxy_target_netproto == 'unix' else '' }}" + proxy_method: "{{ vhost_proxy_method }}" proxy_headers: "{{ vhost_proxy_headers }}" proxy_delete_headers: "{{ vhost_proxy_delete_headers }}" proxy_pass_host_header: "{{ vhost_proxy_pass_host_header }}"