Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
This one's a doozy, but bear with me.
What's the difference between HAProxy, apache/nginx, rack, (thin, puma, mongrel, webrick) and an application server?
It seems that Rack always uses one of the aforementioned web servers, so why doesn't it ever use nginx? Seems like nginx is some other breed of server.
Rack is an interface, a specification, for application servers in Ruby. These application servers typically take in HTTP requests and return HTTP responses over either TCP ports or unix sockets. Ruby web apps will leverage one of the app servers that implement the Rack specification (thin, puma, unicorn, etc). You wouldn't usually expose the application server directly to the internet for a variety of reasons, one of the most important being that these application servers are meant to be a bridge between application code and http, not to stand up to the wide open internet. So, the app server typically has a web server, like nginx or apache, sitting in front of it. It's very common to have http requests coming into nginx on port 80 and then having nginx distributing those requests to one or more rack application servers running on a different port.
Related
I am working on designing a large scale web application that will heavily use WebSockets to communicate data between the client browser and our servers. The question that I have is how we are going to push application updates on our servers without our clients knowing that this is being done. We want to have as mush as 100% up time as possible.
The problem is with the WebSockets becoming closed if there is an application update being done on it. Is there a way to hand off an existing connection to another application server?
I was considering to implement some client side script that would automatically re-connect to the server if it was closed prematurely. However I would like to know from you smart people what other ideas that I can consider.
Thanks!
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
I would like to build a app with private chat powered by SockJS using Vert.X. I quickly ran into limitation of SockJS because of it's simplistic API and multiplexing doesn't seem to be the answer (see: https://groups.google.com/d/topic/sockjs/cO7lnH07RCE/discussion ).
Would EventBus Bridge be the right tool? Each client binds to a unique address, and VertX server can respond to them, or ignore them by default if not recognized?
Is that the intent of EventBus Bridge?
Can permit rules be changed once the SockJSBridge is started?
Randomized token (UUID?) can also be added to inbound rule "match" to simulate how session would work.
Is this reasonable? or has this been wildly used?
The EventBusBridge lets clients (browsers via SockJS) talk with other subscribers on the EventBus. That means you can send messages directly with Server-side Services or other clients.
You cannot change the permit/firewall rules for the bridge dynamically. But with regular expressions and using UUIDs, you should be able to implement a chat quite easily. Let me give you an example:
The server listens on address chat-server. The outbound setting in the bridge is set to { "address_re" : "chat-clients\..*" }. Every client registers a handler on chat-clients.<some_UUID_for_this_client> and tells the server to send messages addressed to the client to the registered address.
We have written a chat module in Scala, which you can use as a reference.
Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
I was trying to install Fiddler2 to capture some HTTPS traffic in order to troubleshoot a slow file upload speed issue between client(windows 7) to a web server(Windows 2008 R2).
One strange thing I have noticed was the file uploading process became super fast after I have fiddler up and running. Could it because the fiddler started acting as a proxy server and using port 8888?
Why is it when I start using Fiddler2 the upload process speeds up?
Is this a WebDav request? Or a file upload through a traditional HTML form?
For WebDAV:
Most likely, this is due to a bug in the Microsoft WebDAV implementation, whereby they waste a bunch of time trying to "Automatically Detect" your proxy server over and over again via WPAD. This can be very slow in an environment without such a proxy server.
Fiddler caches the result of a proxy detection once at startup and sets itself as the system proxy, which prevents the WebDAV stack from incorrectly rerunning the WPAD algorithm over and over.
For a HTML Form:
Typically, this would mean that the client's buffer sizes were poorly chosen (IE6 had this problem) and thus the client isn't making good use of the network. Fiddler uses better buffer sizes (32k or 64k, IIRC) and hence makes better use of the network, reducing transfer times. Most modern browsers use buffer sizes chosen to optimize performance.
Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
In a LAN network, my machine is connected to the LAN server and my machine is connected to internet through LAN server. So, can I consider the LAN server as forward proxy?
Not typically.
If all traffic passes through the 'LAN server', you can consider the LAN server a gateway and a NAT-router.
If only HTTP/HTTPS/FTP traffic passes through the LAN server you might indeed be using an application proxy
If you have set up squid, for example, on your server and use it to get http content from the internet, then yes, the squid is a forwarding proxy service. If your server is running some DNS server to forward your queries to upstream DNS server (even such a small as dnsmasq), then yes, this DNS server is a forwarding proxy service.
Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
are there others proxy servers like SQUID? I have seen nginx and others, but they seem not work with filter content, block urls, domains, etc.
http://en.wikipedia.org/wiki/Proxy_server#Proxy-Servers
Apache HTTP Server
Apache Traffic Server - high-performance open-source HTTP proxy server.
lighttpd - open-source web server, optimized for speed-critical environments.
Microsoft Forefront Threat Management Gateway, (ISA), forward and reverse caching proxy and firewall.
Nginx - lightweight, high-performance web server, reverse proxy and e-mail proxy (IMAP/POP3).
Polipo - lightweight pipelining, multiplexing, forwarding and caching proxy, SOCKS proxy and daemon.
Pound reverse proxy.
Privoxy - privacy enhancing proxy.
Squid cache - a proxy server and web cache daemon.
Tinyproxy - a fast and small HTTP proxy server daemon, which supports reverse proxying and transparent proxying.
TriangleBoy - an anonymizing proxy service.
Varnish - a performance-focused open source reverse proxy.
WinGate - multi-protocol forward/reverse/caching/intercepting proxy and packet firewall / NAT for Windows platforms.
Ziproxy - lightweight forwarding, non-caching, HTTP proxy for traffic optimization.
SuffixProxy - open-source HTTP-Suffix proxy server. Easy to use.
Glype - A free php based web proxy script. Easy to setup a proxy on a webserver quickly.
GeoEdge - A professional proxy server provider with 102 locations worldwide.