Skip to content

Commit 0bb2883

Browse files
committed
httpd vhost:80 configuration
Redirect Foreman http -> https Allow pulp for http and https
1 parent e86a756 commit 0bb2883

File tree

3 files changed

+94
-0
lines changed

3 files changed

+94
-0
lines changed

src/roles/httpd/tasks/main.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,14 @@
4343
- src: "{{ httpd_server_key }}"
4444
dest: "private/katello-apache.key"
4545

46+
- name: Configure foreman vhost
47+
ansible.builtin.template:
48+
src: foreman-vhost.conf.j2
49+
dest: /etc/httpd/conf.d/foreman.conf
50+
mode: "0644"
51+
notify:
52+
- Restart httpd
53+
4654
- name: Configure foreman-ssl vhost
4755
ansible.builtin.template:
4856
src: foreman-ssl-vhost.conf.j2
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
<VirtualHost *:80>
2+
ServerName {{ ansible_facts['fqdn'] }}
3+
4+
## Load additional static includes
5+
IncludeOptional "/etc/httpd/conf.d/05-foreman.d/*.conf"
6+
7+
## Logging
8+
ErrorLog "/var/log/httpd/foreman_error.log"
9+
ServerSignature Off
10+
CustomLog "/var/log/httpd/foreman_access.log" combined
11+
12+
## Redirect to HTTPS (except for pulp services)
13+
RewriteEngine On
14+
RewriteCond %{REQUEST_URI} !^/pulp
15+
RewriteCond %{REQUEST_URI} !^/pulpcore_registry
16+
RewriteCond %{REQUEST_URI} !^/pulp_ansible
17+
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
18+
19+
## Request header rules
20+
## as per http://httpd.apache.org/docs/2.4/mod/mod_headers.html#requestheader
21+
RequestHeader set X-FORWARDED-PROTO "http"
22+
RequestHeader set SSL-CLIENT-S-DN ""
23+
RequestHeader set SSL-CLIENT-CERT ""
24+
RequestHeader set SSL-CLIENT-VERIFY ""
25+
RequestHeader unset REMOTE_USER
26+
RequestHeader unset REMOTE-USER
27+
28+
ProxyPass /pulp_ansible/galaxy/ {{ httpd_pulp_api_backend }}/pulp_ansible/galaxy/
29+
ProxyPassReverse /pulp_ansible/galaxy/ {{ httpd_pulp_api_backend }}/pulp_ansible/galaxy/
30+
31+
<Location "/pulpcore_registry/v2/">
32+
RequestHeader unset REMOTE_USER
33+
RequestHeader unset REMOTE-USER
34+
RequestHeader set REMOTE-USER "admin" "expr=%{SSL_CLIENT_S_DN_CN} == '{{ ansible_facts['fqdn'] }}'"
35+
ProxyPass {{ httpd_pulp_api_backend }}/v2/
36+
ProxyPassReverse {{ httpd_pulp_api_backend }}/v2/
37+
</Location>
38+
39+
ProxyPass /pulp/container/ {{ httpd_pulp_content_backend }}/pulp/container/
40+
ProxyPassReverse /pulp/container/ {{ httpd_pulp_content_backend }}/pulp/container/
41+
42+
<Location "/pulp/content">
43+
RequestHeader unset X-CLIENT-CERT
44+
RequestHeader set X-CLIENT-CERT "%{SSL_CLIENT_CERT}s" env=SSL_CLIENT_CERT
45+
ProxyPass {{ httpd_pulp_content_backend }}/pulp/content disablereuse=on timeout=600
46+
ProxyPassReverse {{ httpd_pulp_content_backend }}/pulp/content
47+
</Location>
48+
49+
<Location "/pulp/api/v3">
50+
RequestHeader unset REMOTE_USER
51+
RequestHeader unset REMOTE-USER
52+
RequestHeader set REMOTE-USER "admin" "expr=%{SSL_CLIENT_S_DN_CN} == '{{ ansible_facts['fqdn'] }}'"
53+
ProxyPass {{ httpd_pulp_api_backend }}/pulp/api/v3 timeout=600
54+
ProxyPassReverse {{ httpd_pulp_api_backend }}/pulp/api/v3
55+
</Location>
56+
57+
ProxyPass /pulp/assets/ {{ httpd_pulp_api_backend }}/pulp/assets/
58+
ProxyPassReverse /pulp/assets/ {{ httpd_pulp_api_backend }}/pulp/assets/
59+
60+
## Proxy rules
61+
ProxyRequests Off
62+
ProxyPreserveHost On
63+
ProxyAddHeaders On
64+
ProxyPass /pulp !
65+
ProxyPass /icons !
66+
ProxyPass /server-status !
67+
ProxyPass / {{ httpd_foreman_backend }}/ retry=0 timeout=900
68+
ProxyPassReverse / {{ httpd_foreman_backend }}/
69+
70+
AddDefaultCharset UTF-8
71+
</VirtualHost>

tests/httpd_test.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,18 @@ def test_https_pulp_auth(server, certificates, server_fqdn):
4141
cmd = server.run(f"curl --cacert {certificates['ca_certificate']} --silent --write-out '%{{stderr}}%{{http_code}}' --cert {certificates['client_certificate']} --key {certificates['client_key']} https://{server_fqdn}/pulp/api/v3/users/")
4242
assert cmd.succeeded
4343
assert cmd.stderr == '200'
44+
45+
def test_http_foreman_redirect(server, server_fqdn):
46+
cmd = server.run(f"curl --silent --output /dev/null --write-out '%{{http_code}}' http://{server_fqdn}")
47+
assert cmd.succeeded
48+
assert cmd.stdout == '301'
49+
50+
def test_http_pulp_status(server, server_fqdn):
51+
cmd = server.run(f"curl --silent --output /dev/null --write-out '%{{http_code}}' http://{server_fqdn}/pulp/api/v3/status/")
52+
assert cmd.succeeded
53+
assert cmd.stdout == '200'
54+
55+
def test_http_pulp_content(server, server_fqdn):
56+
cmd = server.run(f"curl --silent --output /dev/null --write-out '%{{http_code}}' http://{server_fqdn}/pulp/content/")
57+
assert cmd.succeeded
58+
assert cmd.stdout == '200'

0 commit comments

Comments
 (0)