Why is reverse proxy bad?

Why is reverse proxy bad?

The reverse proxy is a common pattern, especially for a large or distributed project, where services are deployed on a set of subdomains of an "upstream domain", but the "upstream domain" must not be directly accessed by the users, so the solution is to reverse proxy the traffic through a single domain name.

A good example would be the Amazon website: everything on that website is from the same upstream domain and you have to use a browser plugin called "Amazon", which forwards every request made to the Amazon domain to the internal server, so you never directly access any of their subdomains like books.amazon.com, movies.com, electronics.com or whatever.

It's pretty clear what the tradeoff is with this pattern: it makes it much easier to scale, because one site may serve millions of requests per day, so if one server is busy, there's no issue. But a drawback is that the user gets to see all the information under a single domain, so they don't get that much of a benefit, they have to jump between each subdomain in order to see all the subdomains' information.

I've used reverse proxies successfully (including with PHP), but there was one thing that was bothering me for a long time: why is the pattern still called reverse proxy? The "forward" part is much more important than the "reverse" part, especially with HTTP. For example, the following requests might have different outcomes, depending on the order in which they were processed: GET
B: GET. C: GET. D: GET. The answer is simple: the user isn't aware of the details of how the traffic is going over the network, so we don't care what side of the request goes first, we just know that it goes from "our origin" to the "destination". But isn't it bad for all the requests that follow a pattern A->B->C to go through a single "middle-man" and get slowed down? Sure, there are ways of avoiding that using special headers (or HTTP headers), but that isn't the question here.

Is NGINX a proxy or reverse proxy?

The short answer is: Yes, NGINX is both a proxy and a reverse proxy.

But most of the time you use NGINX as a reverse proxy. NGINX is an extremely powerful reverse proxy. The combination of features makes it very convenient for use with other technologies. You can run several servers behind NGINX as reverse proxies (for different services), or you can have one server which itself serves as a reverse proxy and proxy to other servers (and still some other interesting uses are possible).

How is it possible? Many people have their questions about what NGINX does: How does it work? How does it handle different paths and hosts? How does it handle TLS? What about compression and caching? Many of these questions can be answered in an FAQ for NGINX: nginx.wiki.

In this article I want to explain some of these questions and also give some hints about what else NGINX can do and should do. The short answer is that NGINX is a TCP and HTTP/2 server. All the requests are handled as simple HTTP requests. If the client accepts a certain SSL certificate then it will also accept this SSL certificate with all traffic (HTTPS is not an option with this setup). For more details on how this works in detail see also: HTTPS and SSL-tuning on the nginx.

This doesn't mean that NGINX cannot be configured to work with many other protocols. A lot of people have used it as a proxy or reverse proxy for some protocols: HTTP/1. SPDY. STREAM. MySQL.

(the list can be further extended). We'll see some examples of how these protocols are used with NGINX in a later article. But most often it's used for the more common protocols HTTP and HTTPS. The advantage of using NGINX as reverse proxy or reverse proxy combined with other technology is that you can mix protocols and protocols. You can have one reverse proxy or reverse proxy combined with SPDY, HTTP/2, TLS and more, and still have a unified interface. It's all managed by the same module (or "handler").

What is the difference between application proxy and reverse proxy?

An application proxy is a piece of software that sits between your web server and the client.

It may do a lot of things, but it will always be a web server. It will usually serve a static html file or a similar "page" which has links to other parts of the site that are served by your web server.

A reverse proxy is a piece of software that sits between your web server and the Internet. It may do a lot of things, but it will never be a web server. It will usually route traffic to your web server using the internet protocol.

For example, you have an Apache web server running on port 80 and serving html files. If you wanted to run a site on port 888, you would set up a reverse proxy (eg NGINX) that listens on port 888 and forwards the requests to your Apache web server.

In this way, you can host multiple sites on the same machine, and all of the sites will be accessed through a single port on the web server. As @VonC said, it is reverse proxy vs application proxy. Application proxy : A piece of software that sits between your web server and the client. Reverse proxy : A piece of software that sits between your web server and the Internet. There are many kinds of proxies but here I would like to mention the following two. Application proxies :- These proxies are used for improving application performance by hiding the complexities of the underlying network infrastructure. Reverse proxies :- Reverse proxies provide HTTP/HTTPS traffic redirection, SSL termination, load balancing, caching, content security policies, web application firewall, and URL rewriting.

Which type of proxy is best?

I'm an engineering student, and I'm going to be working with a company in the UK that doesn't have a strong presence in the US.

Their system is behind a proxy, which I can use to access it. The problem is that their proxy doesn't work. I can't use the system, and I can't access other websites using the proxy. It's really a minor inconvenience, but I can't use it.

How do I know what type of proxy I need? What are the advantages and disadvantages of each? For you, your question is too broad, so you'll have to provide more information. In general, the two most common types of proxies are transparent proxies (where the entire request/response goes through the proxy, including headers) and HTTP tunneling (where the request/response goes over HTTP protocol, and the headers are modified or added as necessary).

The big benefit of a transparent proxy is that it's transparent to the application, meaning that it works just like any other browser. It's also easy to set up, since you simply point your browser to a different server, and it will see the request as if it were being sent to the real server.

The big benefit of an HTTP tunnel is that it hides the contents of the HTTP headers. This makes it possible to spoof the IP address and hostname of the server, making it difficult to tell where the traffic is coming from. An example of an HTTP tunnel might be to setup an HTTP tunnel on your router with a free service like httptunnel.org. With this approach, you'd point your browser to the HTTP tunnel server instead of to the normal web server, and the tunnel would handle the request. If you're using a router with an ethernet port that supports NAT, then the router could be configured to allow HTTP tunnels as well. In this case, you'd point your browser at the router's IP address, and it would work as expected.

If you're interested in doing some research into these types of proxies, you might start here: Wikipedia article on transparent proxies. Wikipedia article on HTTP tunneling. I'm not aware of any pros and cons of either method of proxy configuration, but I'm sure someone else could give a better answer than I could.

Related Answers

How do I setup a reverse proxy in Windows?

The best of them There are many ways to use Nginx as r...

How to install nginx in Linux without internet connection?

This is a quick guide to installing nginx on the latest version of Ubuntu....

Is there a GUI for NGINX?

I've been wondering if there is a GUI for using NGINX, as in one where you just c...