From 3b58f902b159d84feebbb164ab4db36be2e2c8ea Mon Sep 17 00:00:00 2001 From: stefanwerfling Date: Mon, 4 Sep 2023 12:42:26 +0000 Subject: [PATCH] GITBOOK-60: change request with no subject merged in GitBook --- .gitbook/assets/proxy_protocol_with.png | Bin 0 -> 30786 bytes .gitbook/assets/proxy_protocol_without.png | Bin 0 -> 16299 bytes SUMMARY.md | 3 +- index/configurations/README.md | 2 +- .../{listen.md => listen/README.md} | 26 +++++++++--------- index/configurations/listen/proxy-protocol.md | 21 ++++++++++++++ index/configurations/routes.md | 11 ++++++-- 7 files changed, 45 insertions(+), 18 deletions(-) create mode 100644 .gitbook/assets/proxy_protocol_with.png create mode 100644 .gitbook/assets/proxy_protocol_without.png rename index/configurations/{listen.md => listen/README.md} (52%) create mode 100644 index/configurations/listen/proxy-protocol.md diff --git a/.gitbook/assets/proxy_protocol_with.png b/.gitbook/assets/proxy_protocol_with.png new file mode 100644 index 0000000000000000000000000000000000000000..ca9d361971504ee5f52c96cbd57371ef9ef3c3cc GIT binary patch literal 30786 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 VtjuHg$0yrh5~8x-tAzCf{~z9IJd^+c literal 0 HcmV?d00001 diff --git a/SUMMARY.md b/SUMMARY.md index d36509b..d01ae96 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -15,7 +15,8 @@ * [Configurations](index/configurations/README.md) * [Which user type am I](index/configurations/which-user-type-am-i.md) * [Port forwarding](index/configurations/port-forwarding.md) - * [Listen](index/configurations/listen.md) + * [Listen](index/configurations/listen/README.md) + * [Proxy protocol](index/configurations/listen/proxy-protocol.md) * [IP Access](index/configurations/ip-access.md) * [Domains](index/configurations/domains/README.md) * [Own DNS Server](index/configurations/domains/own-dns-server.md) diff --git a/index/configurations/README.md b/index/configurations/README.md index 5bdd0e4..e83da9c 100644 --- a/index/configurations/README.md +++ b/index/configurations/README.md @@ -13,4 +13,4 @@ description: >- The following order should be followed when configuring Flyingfish for the first time: -
  1. Which user type am I
Clarification of the use of FlyingFishwhich-user-type-am-i.md
  1. Port forwarding
Information for port forwarding from the routerport-forwarding.md
  1. Listen
Connections from the internet to the servicelisten.md
  1. IP Access
IP access management White-/Black-listip-access.md
  1. Domains
Creating and managing the domainsdomains
+
  1. Which user type am I
Clarification of the use of FlyingFishwhich-user-type-am-i.md
  1. Port forwarding
Information for port forwarding from the routerport-forwarding.md
  1. Listen
Connections from the internet to the servicelisten
  1. IP Access
IP access management White-/Black-listip-access.md
  1. Domains
Creating and managing the domainsdomains
diff --git a/index/configurations/listen.md b/index/configurations/listen/README.md similarity index 52% rename from index/configurations/listen.md rename to index/configurations/listen/README.md index f80c43b..ebc2f73 100644 --- a/index/configurations/listen.md +++ b/index/configurations/listen/README.md @@ -6,7 +6,7 @@ description: >- # Listen -
+
The ports specified here come from the web interface and are used by nginx intern docker container. @@ -16,9 +16,9 @@ The ports specified here come from the web interface and are used by nginx inter | 443 (TCP) | HTTPS/SSH/SSL Protocols\* | | 53 (TCP/UDP) | DNS Protocol | -These ports are internal to nginx of type "Stream". You can see a port overview again in [port forwarding](port-forwarding.md). +These ports are internal to nginx of type "Stream". You can see a port overview again in [port forwarding](../port-forwarding.md). -

Standard listen ports by setup

+

Standard listen ports by setup

If you only use the standard ports for your services, you do not need to enter any additional ports here. @@ -28,7 +28,7 @@ If you only use the standard ports for your services, you do not need to enter a
-

Add Listen

+

Add Listen

@@ -36,21 +36,21 @@ Add a list, a dialog follows that also appears when editing. -
+
1. **Name:** Name your list, so you always recognize it in the UI. -2. **Type:** Type of listening from Nginx Proxy. Stream or HTTP/HTTPS, the difference is how the connection is handled. +2. **Type:** Type of listening from Nginx proxy. Stream or HTTP/HTTPS, the difference is how the connection is handled. 3. **Protocol:** Which protocol should be used, UDP can also be used in addition to TCP for a stream. 4. **Port:** Which port the listening is listening on. 5. **Description:** Here you can describe in more detail what the listener is used for. 6. **IP6 enable:** Additionally enables listening on an IP6 address (untested yet, but enables it in the nginx config). 7. **IP access:** Enables checking of the IP address against a list (blacklist/whitelist). -8. **Access type:** Which list to use for the IP check. The lists can be maintained under [IP Access](ip-access.md). -9. **Proxy protocol enable:** Activates the use of the proxy protocol. From now on all packets are provided with the Proxy Protocol header. This setting is important for internal HTTP/HTTPS processing. Only in this way does the route get the correct IP of the inquiring request for further checks or logging. -10. **Proxy protocol incoming enable:** Enables expecting a packet with a proxy header. Should the FlyingFish sit behind another proxy server with a proxy protocol. +8. **Access type:** Which list to use for the IP check. The lists can be maintained under [IP Access](../ip-access.md). +9. **Proxy protocol enable:** Activates the use of the [proxy protocol](proxy-protocol.md). From now on all packets are provided with the [proxy protocol](proxy-protocol.md) header. This setting is important for internal HTTP/HTTPS processing. Only in this way does the route get the correct IP of the inquiring request for further checks or logging. +10. **Proxy protocol incoming enable:** Enables expecting a packet with a proxy header. Should the FlyingFish sit behind another proxy server with a [proxy protocol](proxy-protocol.md). 11. **Disable this listen:** Disables listening, settings are skipped during nginx config build. All dependent routes are also skipped. -After the initial installation, you can view the automatically installed listeners. You will find that ports 80 and 443 work with the proxy protocol. There is a good reason for this, since the stream points to the internal HTTP/HTTPS servers (lists). Which in turn expect the proxy protocol to process the correct IP from the request and not the IP 127.0.01. +After the initial installation, you can view the automatically installed listeners. You will find that ports 80 and 443 work with the [proxy protocol](proxy-protocol.md). There is a good reason for this, since the stream points to the internal HTTP/HTTPS servers (lists). Which in turn expect the [proxy protocol](proxy-protocol.md) to process the correct IP from the request and not the IP 127.0.01. @@ -62,11 +62,11 @@ Save causes an immediate reload of nginx. Existing connections are kept as if ru The following graphic should help to understand the list process: -

Portsflow

+

Portsflow

Port 5333, 80, 443 Listening on the network from the host (as a bridge, port forwarding to the Docker container). -There, the Nginx first uses "[IP access"](ip-access.md) to check whether the IPs have access rights. Then the streams (TCP/UDP) are split into their protocol (SSL/HTTP/etc.) and split into [domains](domains/) for forwarded to a destination. Should not specify an external destination, then use the internal ports for the HTTP (10080) and HTTPS (10443) server are specified as standard. They perform a "proxy reserve" and request a route too internal or external HTTP/HTTPS server. +There, the Nginx first uses "[IP access"](../ip-access.md) to check whether the IPs have access rights. Then the streams (TCP/UDP) are split into their protocol (SSL/HTTP/etc.) and split into [domains](../domains/) for forwarded to a destination. Should not specify an external destination, then use the internal ports for the HTTP (10080) and HTTPS (10443) server are specified as standard. They perform a "proxy reserve" and request a route too internal or external HTTP/HTTPS server. @@ -74,4 +74,4 @@ There, the Nginx first uses "[

Listen flow!

+

Listen flow!

diff --git a/index/configurations/listen/proxy-protocol.md b/index/configurations/listen/proxy-protocol.md new file mode 100644 index 0000000..cf56c61 --- /dev/null +++ b/index/configurations/listen/proxy-protocol.md @@ -0,0 +1,21 @@ +--- +description: How is this to be understood? +--- + +# Proxy protocol + +As already mentioned in [Listen](./), a stream forwarded by Nginx cannot include the source IP. We help ourselves by activating the proxy protocol. As a result, the packet is taken and the information from the original IP is stored at the beginning. + + + +
+ +As can be seen in the diagram, the stream still receives the original IP from the querying client. As soon as the stream connects to the reverse proxy, this is an internal connection with 127.0.0.1. The information is lost from the reverse proxy for the web server. + + + +
+ +With the Proxy protocol, the reverse proxy receives the original IP with the package extension of the Proxy protocol header and can pass it on to the web server. + +You can read more about it at [Exploring the proxy protocol](https://seriousben.com/posts/2020-02-exploring-the-proxy-protocol/). diff --git a/index/configurations/routes.md b/index/configurations/routes.md index 14db4ef..8261518 100644 --- a/index/configurations/routes.md +++ b/index/configurations/routes.md @@ -4,9 +4,9 @@ description: Setting a route from the listen to the target. # Routes -A route is a path from the input ([Listen](listen.md)) to the destination. The destination can be of different types, stream, HTTP/HTTPS, SSH, use. +A route is a path from the input ([Listen](listen/)) to the destination. The destination can be of different types, stream, HTTP/HTTPS, SSH, use. -With the help of the [graphic from Listen](listen.md#listen-flow) I would like to show the area controlled by the route again: +With the help of the [graphic from Listen](listen/#listen-flow) I would like to show the area controlled by the route again:

Listen and Routes

@@ -26,4 +26,9 @@ Existing connections are kept as if running the command: nginx -s reload The default routes cannot be edited or deleted. {% endhint %} -3. Each domain entered in [Domains](domains/) is displayed under Routes. One or more routes from one or more [Listen](listen.md) to a destination can now be entered. +3. Each domain entered in [Domains](domains/) is displayed under Routes. One or more routes from one or more [Listen](listen/) to a destination can now be entered. + + + +## Default Routes +