mirror of
https://github.com/3proxy/3proxy.git
synced 2026-10-17 08:55:49 +08:00
A service's TCP listening socket is kept as a listener: when a reload commits, before the old services are told to stop, each new service takes over the listener of an older configuration's service on the same address, port, network namespace and device with the same -ol options. It skips socket() and bind(), calling only listen() again for its own backlog, and logs "Accepting connections, taken over". The old service stops accepting at its next poll and lets go of the socket; whoever lets go last closes it, unlinking a Unix socket's path. So a service staying where it was no longer leaves a gap: before, the old one closed its socket and the new one opened another, and a connection queued on the old socket was reset. UDP services, whose clients read from the service's socket, and two services of the same configuration on one address keep their own sockets as before. A test case makes requests nonstop through three reloads and wants none refused or reset; against the build before this, connections were reset. The reload case no longer waits out the switch. SIGUSR1 in 3proxy(8) describes how a reload behaves now. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
159 lines
5.2 KiB
Groff
159 lines
5.2 KiB
Groff
.TH 3proxy "8" "May 2026" "3proxy 0.9" "Universal proxy server"
|
|
.SH NAME
|
|
.B 3proxy
|
|
\- 3[APA3A] tiny proxy server, or trivial proxy server, or free proxy
|
|
server
|
|
.SH SYNOPSIS
|
|
.B 3proxy
|
|
.RI [ config_file ]
|
|
.br
|
|
.B 3proxy
|
|
.RI [ \-\-install ]
|
|
.br
|
|
.B 3proxy
|
|
.RI [ \-\-remove ]
|
|
.SH DESCRIPTION
|
|
.B 3proxy
|
|
is a universal proxy server. It can be used to provide internal users with
|
|
fully controllable access to external resources or to provide external
|
|
users with access to internal resources. 3proxy is not developed to replace
|
|
.BR squid (8),
|
|
but it can extend the functionality of an existing caching proxy.
|
|
It can be used to route requests between different types of clients and proxy
|
|
servers. Think about it as application level
|
|
gateway with configuration like hardware router has for network layer.
|
|
It can establish multiple
|
|
gateways with HTTP and HTTPS proxy with FTP over HTTP support, SOCKS v4,
|
|
v4.5 and v5, POP3 proxy, UDP and TCP portmappers. Each gateway is started
|
|
from the configuration file like an independent service
|
|
.BR proxy (8)
|
|
.BR socks (8)
|
|
.BR pop3p (8)
|
|
.BR imapp (8)
|
|
.BR tcppm (8)
|
|
.BR udppm (8)
|
|
.BR ftppr (8)
|
|
.BR dnspr
|
|
but
|
|
.BR 3proxy
|
|
is not a kind of wrapper or superserver for these daemons. It just has the same
|
|
code compiled in, but provides much more functionality. SOCKSv5
|
|
implementation allows you to use 3proxy with any UDP or TCP based client
|
|
applications designed without
|
|
proxy support (with
|
|
.IR SocksCAP ,
|
|
.I FreeCAP
|
|
or another client-side redirector under Windows or with a socksification library
|
|
under Unix). So you can play your favourite games, listen to music, exchange
|
|
files and messages and even accept incoming connections behind a proxy server.
|
|
.PP
|
|
.I dnspr
|
|
does not exist as an independent service. It's a DNS caching proxy (it requires
|
|
.I nscache
|
|
and
|
|
.I nserver
|
|
to be set in the configuration. Only A-records are cached. Please note that
|
|
this caching is mostly a 'hack' and has nothing to do with a real
|
|
DNS server, but it works perfectly for SOHO networks.
|
|
|
|
.PP
|
|
3proxy supports access control lists (ACL) like network router. Source
|
|
and destination networks and destination port can be specified. In addition,
|
|
usernames and gateway action (for example GET or POST) can be used in ACLs.
|
|
In order to filter request on username basis user must be authenticated somehow. There are few
|
|
authentication types including password authentication and authentication by
|
|
NetBIOS name for Windows clients (it\'s very like ident authentication).
|
|
Depending on ACL action request can be allowed, denied or redirected to another
|
|
host or to another proxy server or even to a chain of proxy servers.
|
|
.PP
|
|
It supports different types of logging: to logfiles,
|
|
.BR syslog (3)
|
|
(only under Unix) or to an ODBC database. Logging format is tunable to provide
|
|
compatibility with existing log file parsers. It makes it possible to use
|
|
3proxy with IIS, ISA, Apache or Squid log parsers.
|
|
.SH OPTIONS
|
|
.TP
|
|
.B config_file
|
|
Name of config file. See
|
|
.BR 3proxy.cfg (3)
|
|
for configuration file format. Under Windows, if config_file is not specified,
|
|
.BR 3proxy
|
|
looks for a file named
|
|
.I 3proxy.cfg
|
|
in the default location (in the same directory as the executable file and in the current
|
|
directory). Under Unix, if no config file is specified, 3proxy reads
|
|
configuration from stdin. It makes it possible to use the 3proxy.cfg file as
|
|
an executable script just by setting +x mode and adding
|
|
.br
|
|
#!/usr/local/3proxy/3proxy
|
|
.br
|
|
as a first line in 3proxy.cfg
|
|
.TP
|
|
.B --install
|
|
(Windows NT family only) install
|
|
.BR 3proxy
|
|
as a system service
|
|
.TP
|
|
.B --remove
|
|
(Windows NT family only) remove
|
|
.BR 3proxy
|
|
from system services
|
|
.SH SIGNALS
|
|
Under Unix there are a few signals
|
|
.BR 3proxy
|
|
catches. See
|
|
.BR kill (1).
|
|
.TP
|
|
.B SIGTERM
|
|
clean up connections and exit
|
|
.TP
|
|
.B SIGPAUSE
|
|
stop accepting new connections, on second signal - start and re-read
|
|
configuration
|
|
.TP
|
|
.B SIGCONT
|
|
start to accept new connections
|
|
.TP
|
|
.B SIGUSR1
|
|
reload configuration. The file is read whole before anything changes: if
|
|
it has an error, the configuration in force stays as it is, its services
|
|
running. Otherwise the new services start and the old ones stop accepting
|
|
within a second; connections already open finish under the old
|
|
configuration. A new service listening on the same address and port, in
|
|
the same network namespace and on the same device, with the same -ol
|
|
options, takes over the old service's TCP listening socket, so no
|
|
connection is refused or lost meanwhile; any other listening socket is
|
|
closed by the old service and opened by the new one. Settings left out of
|
|
the new file go back to their defaults.
|
|
.PP
|
|
Under Windows, if
|
|
.BR 3proxy
|
|
is installed as a service you can use standard service management to start, stop,
|
|
pause and continue the 3proxy service, for example:
|
|
.br
|
|
.BR "net start 3proxy"
|
|
.br
|
|
.BR "net stop 3proxy"
|
|
.br
|
|
.BR "net pause 3proxy"
|
|
.br
|
|
.BR "net continue 3proxy"
|
|
.PP
|
|
Web admin service can also be used to reload configuration. Use
|
|
wget to automate this task.
|
|
.SH FILES
|
|
.TP
|
|
.I "/usr/local/3proxy/3proxy.cfg (3proxy.cfg)"
|
|
.BR 3proxy
|
|
configuration file
|
|
.SH BUGS
|
|
Report all bugs to
|
|
.BR 3proxy@3proxy.org
|
|
.SH SEE ALSO
|
|
3proxy.cfg(5), proxy(8), ftppr(8), socks(8), pop3p(8), imapp(8), tcppm(8), udppm(8),
|
|
kill(1), syslogd(8),
|
|
.br
|
|
https://3proxy.org/
|
|
.SH AUTHORS
|
|
3proxy is designed by Vladimir Dubrovin <vlad@3proxy.org>
|