mirror of
https://github.com/caddyserver/caddy.git
synced 2026-07-01 06:11:35 +00:00
Don't treat localhost specially when assigning bind address
If we listen on 127.0.0.1:80 for `localhost` but :80 for everything else, then a hostname in the hosts file that resolves to 127.0.0.1 will be served on :80 (unless the bind directive is used) but the OS will use the socket listening at 127.0.0.1:80, thus giving a "No such site" error even though the site is there, but it's on the other listener at :80. Two ways to fix this: 1) Leave as-is and require the user to set "bind 127.0.0.1" in their Caddyfile for all sites that are resolved in the hosts file, or 2) Take out this special case and let localhost sites listen on :80 (unless the user changes that with the bind directive, of course). Having localhost bind to any interface is a little annoying (unsettling?) but probably best in the long run. https://forum.caddyserver.com/t/wildcard-virtual-domains-with-wildcard-roots/221/9?u=matt
This commit is contained in:
parent
6f05faa670
commit
58085edc16
2 changed files with 28 additions and 7 deletions
|
|
@ -206,11 +206,11 @@ func groupSiteConfigsByListenAddr(configs []*SiteConfig) (map[string][]*SiteConf
|
|||
groups := make(map[string][]*SiteConfig)
|
||||
|
||||
for _, conf := range configs {
|
||||
if caddy.IsLoopback(conf.Addr.Host) && conf.ListenHost == "" {
|
||||
// special case: one would not expect a site served
|
||||
// at loopback to be connected to from the outside.
|
||||
conf.ListenHost = conf.Addr.Host
|
||||
}
|
||||
// We would add a special case here so that localhost addresses
|
||||
// bind to 127.0.0.1 if conf.ListenHost is not already set, which
|
||||
// would prevent outsiders from even connecting; but that was problematic:
|
||||
// https://forum.caddyserver.com/t/wildcard-virtual-domains-with-wildcard-roots/221/5?u=matt
|
||||
|
||||
if conf.Addr.Port == "" {
|
||||
conf.Addr.Port = Port
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue