mirror of
https://github.com/9001/copyparty.git
synced 2025-08-17 09:02:15 -06:00
add reverse-proxy support
This commit is contained in:
parent
755a2ee023
commit
1aa1b34c80
|
@ -13,3 +13,7 @@
|
||||||
init-scripts to start copyparty as a service
|
init-scripts to start copyparty as a service
|
||||||
* [`systemd/copyparty.service`](systemd/copyparty.service)
|
* [`systemd/copyparty.service`](systemd/copyparty.service)
|
||||||
* [`openrc/copyparty`](openrc/copyparty)
|
* [`openrc/copyparty`](openrc/copyparty)
|
||||||
|
|
||||||
|
# Reverse-proxy
|
||||||
|
copyparty has basic support for running behind another webserver
|
||||||
|
* [`nginx/copyparty.conf`](nginx/copyparty.conf)
|
||||||
|
|
26
contrib/nginx/copyparty.conf
Normal file
26
contrib/nginx/copyparty.conf
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
upstream cpp {
|
||||||
|
server 127.0.0.1:3923;
|
||||||
|
keepalive 120;
|
||||||
|
}
|
||||||
|
server {
|
||||||
|
listen 443 ssl;
|
||||||
|
listen [::]:443 ssl;
|
||||||
|
|
||||||
|
server_name fs.example.com;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://cpp;
|
||||||
|
proxy_redirect off;
|
||||||
|
# disable buffering (next 4 lines)
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
client_max_body_size 0;
|
||||||
|
proxy_buffering off;
|
||||||
|
proxy_request_buffering off;
|
||||||
|
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
proxy_set_header Connection "Keep-Alive";
|
||||||
|
}
|
||||||
|
}
|
|
@ -83,6 +83,10 @@ class HttpCli(object):
|
||||||
v = self.headers.get("connection", "").lower()
|
v = self.headers.get("connection", "").lower()
|
||||||
self.keepalive = not v.startswith("close")
|
self.keepalive = not v.startswith("close")
|
||||||
|
|
||||||
|
v = self.headers.get("x-forwarded-for", None)
|
||||||
|
if v is not None and self.conn.addr[0] in ["127.0.0.1", "::1"]:
|
||||||
|
self.log_src = self.conn.set_rproxy(v.split(",")[0])
|
||||||
|
|
||||||
self.uname = "*"
|
self.uname = "*"
|
||||||
if "cookie" in self.headers:
|
if "cookie" in self.headers:
|
||||||
cookies = self.headers["cookie"].split(";")
|
cookies = self.headers["cookie"].split(";")
|
||||||
|
@ -462,7 +466,7 @@ class HttpCli(object):
|
||||||
|
|
||||||
spd = self._spd(post_sz)
|
spd = self._spd(post_sz)
|
||||||
self.log("{} thank".format(spd))
|
self.log("{} thank".format(spd))
|
||||||
self.reply("thank")
|
self.reply(b"thank")
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def handle_login(self):
|
def handle_login(self):
|
||||||
|
|
|
@ -46,7 +46,7 @@ class HttpConn(object):
|
||||||
self.nbyte = 0
|
self.nbyte = 0
|
||||||
self.workload = 0
|
self.workload = 0
|
||||||
self.log_func = hsrv.log
|
self.log_func = hsrv.log
|
||||||
self.log_src = "{} \033[36m{}".format(addr[0], addr[1]).ljust(26)
|
self.set_rproxy()
|
||||||
|
|
||||||
env = jinja2.Environment()
|
env = jinja2.Environment()
|
||||||
env.loader = jinja2.FileSystemLoader(os.path.join(E.mod, "web"))
|
env.loader = jinja2.FileSystemLoader(os.path.join(E.mod, "web"))
|
||||||
|
@ -56,6 +56,18 @@ class HttpConn(object):
|
||||||
self.tpl_md = env.get_template("md.html")
|
self.tpl_md = env.get_template("md.html")
|
||||||
self.tpl_mde = env.get_template("mde.html")
|
self.tpl_mde = env.get_template("mde.html")
|
||||||
|
|
||||||
|
def set_rproxy(self, ip=None):
|
||||||
|
if ip is None:
|
||||||
|
color = 36
|
||||||
|
ip = self.addr[0]
|
||||||
|
self.rproxy = None
|
||||||
|
else:
|
||||||
|
color = 34
|
||||||
|
self.rproxy = ip
|
||||||
|
|
||||||
|
self.log_src = "{} \033[{}m{}".format(ip, color, self.addr[1]).ljust(26)
|
||||||
|
return self.log_src
|
||||||
|
|
||||||
def respath(self, res_name):
|
def respath(self, res_name):
|
||||||
return os.path.join(E.mod, "web", res_name)
|
return os.path.join(E.mod, "web", res_name)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue