Not inside the stream it won't... you'll need the map to at least be inside http and probably server.

[RosettaHealth] <rosettahealth.com>       
Phillip Odam
Principal Engineer, RosettaHealth
rosettahealth.com
        
e: phillip.o...@rosettahealth.com
o: 202.350.4343
a: 2 Wisconsin Circle, Chevy Chase, MD
[twitter] <https://twitter.com/rosettahealth> [facebook] <https://www.facebook.com/rosettahealth> [Instagram] <https://www.instagram.com/rosettahealth> [linkedin] <https://www.linkedin.com/company/nitor-group> Connecting a Whole World of Healthcare <http://www.rosettahealth.com>

On 8/26/19 10:05 PM, Louis Garcia wrote:
Does not work.

stream {
        map $host $name {
                                    plex.montclaire.lan app1;
transmission.montclaire.lan app2;
                                    default default;
                                   }
        upstream app1 {
                       server 127.0.0.1:32400 <http://127.0.0.1:32400> max_fails=3 fail_timeout=10s;
                      }
        upstream app2 {
                       server 127.0.0.1:9091 <http://127.0.0.1:9091> max_fails=3 fail_timeout=10s;
                      }
        server {
                listen 172.16.0.5:80 <http://172.16.0.5:80>;
                listen 172.16.0.5:443 <http://172.16.0.5:443>;
                proxy_pass $name;
                ssl_preread on;
               }
       }

nginx[31436]: nginx: [emerg] unknown "host" variable
nginx[31436]: nginx: configuration file /etc/nginx/nginx.conf test failed

On Mon, Aug 26, 2019 at 9:06 PM Phillip Odam <phillip.o...@nitorgroup.com <mailto:phillip.o...@nitorgroup.com>> wrote:

    Hi Louis

    The variable I think you're looking for is $host -
    http://nginx.org/en/docs/http/ngx_http_core_module.html#variables


    On 8/26/19 8:55 PM, Louis Garcia wrote:
    I am able to use $ssl_preread_server_name to get the server name.
    This is with https requests. Is there a corresponding embedded
    variable for http requests? I would like to setup streams to
    different backend servers based on http requests. Example below
    works for https but not http.
    Thanks.

    stream {
            map $ssl_preread_server_name $name {
    plex.montclaire.lan app1;
    transmission.montclaire.lan app2;
                                                default default;
                                               }
            upstream app1 {
                           server 127.0.0.1:32400
    <http://127.0.0.1:32400> max_fails=3 fail_timeout=10s;
                          }
            upstream app2 {
                           server 127.0.0.1:9091
    <http://127.0.0.1:9091> max_fails=3 fail_timeout=10s;
                          }
            server {
                    listen 172.16.0.5:80 <http://172.16.0.5:80>;
                    listen 172.16.0.5:443 <http://172.16.0.5:443>;
                    proxy_pass $name;
                    ssl_preread on;
                   }
           }


    _______________________________________________
    nginx mailing list
    nginx@nginx.org  <mailto:nginx@nginx.org>
    http://mailman.nginx.org/mailman/listinfo/nginx
    _______________________________________________
    nginx mailing list
    nginx@nginx.org <mailto:nginx@nginx.org>
    http://mailman.nginx.org/mailman/listinfo/nginx


_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx
_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx

Reply via email to