Reputation: 321
I have created a proxy pass for multi URLs.
listen 80;
listen [::]:80;
server_name ~^(.*)redzilla\.11\.75\.65\.21\.xip\.io$;
location / {
set $instname $1;
proxy_pass http://${instname}redzilla.localhost:3000;
}
When I call to this service using chrome, It was triggered 502 error.
http://test.redzilla.11.75.65.21.xip.io/
I put below location tag by hard coding the URL.
location /redzilla {
proxy_pass http://test.redzilla.localhost:3000;
}
Then It is working for only above URL. I want to know how to create proxy pass for multiple URL within single location tag. ( please note : URL pattern is *.redzilla.localhost:3000 , * ( star ) represent any word)
Upvotes: 26
Views: 28052
Reputation: 2480
If you are using nginx inside docker, define a network, using docker network create .... Containers that are part of that network (through the --network flag on docker run), will have a dns resolver added to them, available via 127.0.0.11.
Then in your server {} directive add "resolver 127.0.0.1;"
Upvotes: 17
Reputation: 569
If you really need dynamic domain name then you need to use resolver.
However, if you have variables in proxy_pass but NOT in domain name, easiest solution is to define the server using the upstream directive.
See https://nginx.org/en/docs/http/ngx_http_upstream_module.html
Example:
upstream backend {
server backend.example.com;
}
server {
location /(?<uri_match_prefix>.*)$ {
proxy_pass http://backend/$uri_match_prefix$is_args$args;
}
}
Upvotes: 4