Enabling Reverse Proxy without Application Request Routing (ARR) on IIS 7.x - url-rewriting

There are few questions around Reverse Proxy on Server in Presentation Zone (PZ).
I'm trying to setup a reverse proxy on the IIS 7.x Windows 2012 Server(PZ). Do we really need ARR plugin to configure Reverse Proxy? Can you please suggest enable reverse proxy on the IIS 7.x without using ARR?
Is there any option to enable reverse proxy even without URL Re writer also?
How rewriting rules can be validated, captured, and maintained? asking this in context of deployment perspective.

ARRProxy is Microsoft's load balancing / reverse proxy solution. There are of course 3rd party solutions, like haProxy / nGinx, so you need it for a reverse proxy implementation unless you are going to use one of those.
You need the URL rewrite module, AFAIK.
Not sure. I guess you could have some unit testing on web.config where the rules are stored in the rules node?

Related

Service Fabric Reverse Proxy with https

So I try to use the reverse proxy of Azure Service Fabric with https on a standalone cluster but I'm not able to made it happend.
I read many pages of the documentation but I must miss one or I'm not able to understand it.
So what I want is to call the reverse proxy with https (working fine with http) like https://localhost/SFTest/api/weatherforecast but It's wont work. If I use the "direct link" like https://localhost:xxxx/weatherforecast it's work
First I was using the web installer to setup my dev env on my local machine but from what I read if I want to be able to manage cluster settings it was better to switch to the "full mode" (https://learn.microsoft.com/en-us/azure/service-fabric/service-fabric-cluster-creation-for-windows-server)
With this I was able to create a cluster by using the config "ClusterConfig.Unsecure.DevCluster.json" but the https was not enabled for the reverse proxy.
The isssue is that I have trouble making the difference between securing a cluster and just enable https on reverse proxy. I don't want to have to use certs to connect to the cluster (like going to https://localhost:19081)
Can someone tell me how to enable the ssl (which config file to edit and what to put in it) to the reverse proxy without having to secure the cluster?
It will be a great help :)
So I manage to found how to do it
In the config of the cluster (ClusterConfig.json) or the template (in my case it was ClusterConfig.Unsecure.DevCluster.json) you have to add this
"security": {
"CertificateInformation": {
"ReverseProxyCertificate": {
"Thumbprint": "[ReplaceByThumbprint]",
"ThumbprintSecondary": "[ReplaceByThumbprint]",
"X509StoreName": "My"
}
}
}
Under the "properties" part

play-framework [2.0] HTTPS

i'me working on a web server using play framework 2.0, where the login is executed by a android device software we're also making. And are main concern is that we can't find any support for HTTPS in play 2.0. Sense this is a school project we can't aford clouds nor other proxy to solve the HTTPS for us.
Our main problem is the password and email going in plain sight in the request's body, encrypting and decrypting in the mobile device and on the server looks costly in performance and sense HTTPS takes care of this we wanted to avoid it. Is there any way we can use HTTPS to protect the users login data, or any other suggestion.
If not we might have to migrate all are application to another framework, because it wont look good important confidential data going through the internet without encryption.
Historically, I've seen most folks run the Java/Scala application server behind a reverse proxy of some kind. Setting up HTTPS in apache isn't too hard, and then just use ModProxy to send requests internally to your Play application.
Any one of the reverse proxy systems can likely do this, nginx is popular too, and generally has easier configuration than apache, but I've never used it with HTTPS.
The number one reason normally to do this is security. You can't start a Java program as a non privileged user on port 80. If you start your Java program as root running on port 80, then any hole in your application has root privileges! As a result, starting the Java app on another port, then reverse proxy from an web server that can run as a non-priveleged user on port 80.
(*) This is a slightly over-simplified, but a discussion of this weirdness is beyond the scope of this I think.
It's now possible to use Play and https directly. This was added in Play 2.1
Simply start the server with:
JAVA_OPTS=-Dhttps.port=9001 play start

Steps to setup proxy server

I want to setup proxy server on our office. I have two proxy server's available i.e. (SQUID for Linux and WinProxy for Windows). I have following requirement.
All the rule's which I define in proxy server like block some specific sites etc. should likely to work.
The "Evolution Mail Client" for linux and "Outlook Express" for windows also should work.
So, can you tell me the guidelines how to achieve both the task especially no.-2 .
Thanks in advance.
Squid is a very good option for a caching proxy. It has a configuration file to block some specific sites, IPs, domains... and to tell him which files has to cache. Making a smart proxy is not easy. But you can find great configurations and tutorials in Google or in his wiki.
There are two ways for setting up a proxy:
Direct proxy: you have to manually configure every computer to use your proxy server.
This is the easiest option. I recommend you using this.
Please note, computers that don't use the proxy can access all pages (even if they're blocked).
Transparent proxy: this is the most secure, ideal option for most cases (including yours). You have to configurate your network and the proxy server to forward any requests to it. This is a hard option and very difficult to achieve in your case.
About your Evolution and Outlook problem, there can't be any problems related to the proxy, don't worry about that.

Reverse Proxy on Windows

I have a web server that responds to a number of different sites on port 80. Currently, IIS does the mapping to various sites via host headers, but I'd like to be able to serve other web apps on port 80 hosted in Jetty or Tomcat. IIS prevents that by grabbing all port 80 traffic.
I basically need a reverse proxy to just change the port number to something that another app stack can listen in on. I was looking into nginx but it seems to not be quite ready for prime time on Windows. Eventually I may set up a Linux box specifically for this, but for now I'm interested in a solution which will run all on the same box.
All I really need is something very light which mostly just matches hostname/port and allows rewriting of the port. Does anyone have any suggestions?
If you are running in IIS 7 or above you can use Application Request Routing for that: http://www.iis.net/download/ApplicationRequestRouting
For IIS 5-6, it looks like Apache Tomcat Connector (JK 1.2) is a clean solution. This is an IIS ISAPI filter which allows IIS to act as a reverse proxy for other web servers. It uses Apache JServ Protocol (AJP) to communicate with the app server actually serving requests. Both Tomcat and Jetty implement AJP. URLs are mapped with regex-like config to a particular AJP server instance.
Overview: http://www.iisadmin.co.uk/?p=40&page=3
IIS Config: http://tomcat.apache.org/connectors-doc/reference/iis.html
Mapping Config: http://tomcat.apache.org/connectors-doc/reference/workers.html
This ISAPI plug-in also works with IIS 7.x, but in that case the Application Request Routing (see marked answer) should be considered as it might work better with non-AJP servers.

Get blog.domain.com to appear as www.domain.com/blog

I want to create a blog for an e-commerce website, but due to data security reasons I don't want to host the blog on the same machine as the website is hosted on. Is there a way to
host it on a separate machine using the sub-domain of blog.domain.com but have it be accessible via the url www.domain.com/blog.
My reasoning is that the content will help with seo better if it uses the same domain.
I was thinking about using mod_rewrite but I'm not sure if it would allow page retrieval from a different website.
It is possible to use the Apache module mod_proxy to make the contents of a server appear to be hosted on another server, and therefore appear to be hosted under a different domain. You might like to take a read of this page which details the Apache configuration directives needed to get it up and running. If that doesn't offer enough options for setting it up how you want it, then you could investigate the "force proxy" option in mod_rewrite, which allows you to send certain rewritten requests through mod_proxy to do the proxying.

Resources