I’m having some difficulty using the stream directive in 1.9. I may be
using it wrong, so please correct me if this is incorrect or not
possible.
stream {
server {
listen 1520;
server_name customhost.example.com
proxy_pass db;
}
upstream db {
server 10.100.0.104:1523;
}
}
I have multiple host names (server_name s) that I want to hit 1520 and
be
proxied to different upstream dbs. I have a second stream context with
a
different server_name and different upstream db. I can’t get this to
work.
I think I’m missing something. How would I accomplish this? ultimate
goal:
reverse proxy a database connection based on host name.
Posted at Nginx Forum:
On Tue, May 26, 2015 at 06:47:19PM -0400, sentinel21 wrote:
Hi there,
I’m having some difficulty using the stream directive in 1.9. I may be
using it wrong, so please correct me if this is incorrect or not possible.
A connection comes to an ip:port.
A http connection includes a specific host name in a well-known place
in the request.
An arbitrary tcp connection does not.
stream {
server {
listen 1520;
Untested, but: listen on ip1:1520 here, and ip2:1520 in the next
server block; then have the different host names resolve to different
ip addresses.
I have multiple host names (server_name s) that I want to hit 1520 and be
proxied to different upstream dbs. I have a second stream context with a
different server_name and different upstream db. I can’t get this to work.
I think I’m missing something. How would I accomplish this? ultimate goal:
reverse proxy a database connection based on host name.
I can’t see any other way to achieve what you want, for a generic tcp
forwarder.
hostname is irrelevant - all nginx sees is the ip:port connected to.
f
Francis D. [email protected]