I have a Naviserver with a couple of virtual web servers listening on a
single ip:port. I want to move all those virtual servers to Docker
containers gradually. So I'm trying to install Nginx Reverse Proxy on my
Docker container and configure it to redirect requests to my host
Naviserver.

I've changed my Naviserver config to listen to 8080 and 8443 ports on
docker host gateway IP:

/opt/ns/bin/nsd -w -u nsadmin -t /opt/ns/conf/dz_nsd.tcl -b 172.17.0.1:8080,
> 172.17.0.1:8443


In my Nginx config I have 2 listeners one for dev and dummy1 subdomains:

 server {
>     listen 80;
>     server_name dev.daidze.org;
>
>     location / {
>         proxy_set_header X-Real-IP $remote_addr;
>         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
>         proxy_set_header Host $http_host;
>         proxy_set_header X-Forwarded-Proto $scheme;
>         proxy_pass http://172.17.0.1:8080/;
>     }
> }
>
> server {
> listen 443 ssl;
> server_name dev.daidze.org;
>     ssl_certificate /opt/ns/modules/nsssl/fullchain.pem;
>     ssl_certificate_key  /opt/ns/modules/nsssl/privkey.pem;
>     ssl_prefer_server_ciphers on;
>
>     location / {
>         proxy_set_header X-Real-IP $remote_addr;
>         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
>         proxy_set_header Host $http_host;
>         proxy_set_header X-Forwarded-Proto $scheme;
>         proxy_pass https://172.17.0.1:8443/;
>     }
> }
>
> server {
>     listen 80;
>     server_name dummy1.daidze.org;
>
>     location / {
>         proxy_set_header X-Real-IP $remote_addr;
>         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
>         proxy_set_header Host $http_host;
>         proxy_set_header X-Forwarded-Proto $scheme;
>         proxy_pass http://172.17.0.1:8080/;
>     }
> }
>
> server {
> listen 443 ssl;
> server_name dummy1.daidze.org;
>     ssl_certificate /opt/ns/modules/nsssl/fullchain.pem;
>     ssl_certificate_key  /opt/ns/modules/nsssl/privkey.pem;
>     ssl_prefer_server_ciphers on;
>
>     location / {
>         proxy_set_header X-Real-IP $remote_addr;
>         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
>         proxy_set_header Host $http_host;
>         proxy_set_header X-Forwarded-Proto $scheme;
>         proxy_pass https://172.17.0.1:8443/;
>     }
> }


I'm using proxy_set_header Host $http_host; to redirect the headers real
Host parameter to my host Naviserver installation, but I'm getting response
only from the dev Virtual server. It doesn't matter what url I request
dev.daidze.org or dummy1.daidze.org. Here an example of request to
https://dummy1.daidze.org/ :

dev server
> X-Real-IP: 172.64.238.37
> X-Forwarded-For: 165.90.99.154, 172.64.238.37
> Host: dummy1.daidze.org
> X-Forwarded-Proto: https
> Connection: close
> accept-encoding: gzip, br
> CF-RAY: 85f13d442cd66671-MAD
> CF-Visitor: {"scheme":"https"}
> user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0)
> Gecko/20100101 Firefox/123.0
> accept:
> text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
>
> accept-language: en-US,en;q=0.5
> upgrade-insecure-requests: 1
> sec-fetch-dest: document
> sec-fetch-mode: navigate
> sec-fetch-site: none
> sec-fetch-user: ?1
> sec-gpc: 1
> pragma: no-cache
> cache-control: no-cache
> CF-Connecting-IP: 165.90.99.154
> CDN-Loop: cloudflare
> CF-IPCountry: CV


What am I doing wrong? According to Naviserver docs redirection is done
based on the content of the *host* header field. Right? So this should work.

Thank you,
Maksym
_______________________________________________
naviserver-devel mailing list
naviserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/naviserver-devel

Reply via email to