ProxyPass a URL to different port internally - apache

I've got the following URL.
https://helloworld.com/api/v1/en/user/register
And I'd like to redirect it to different port internally since my api service is running on different port and apache is running on port 80.
I'm doing like this in the apache2 conf but it doesn't work.
ProxyPreserveHost On
ProxyPass ^/(api/v0.9/../.+) http://0.0.0.0:5000/$1
ProxyPassReverse $/(api/v0.9/../.+) http://0.0.0.0:5000/$1
How can I fix it?
Thanks

Have a try with this:
ProxyRequests Off
ProxyPreserveHost On
ProxyPass "/api/v1/" "http://localhost:5000/api/v1/"
ProxyPassReverse "/api/v1/" "http://localhost:5000/api/v1/"

Related

Apache reverse proxy infinite loop

I am stuck on an apache configure issue. The website keeps loading. It seems like an infinite redirection issue.
I am setting up a reverse proxy. The purpose is to host two web servers(Wordpress and Flask) on the same machine. I want some requests go to wordpress and some of goes to Flask. My solution is to let Wordpress listening on port 8080 and Flask listening on port 8081. In the setting below, I am trying to redirect all requests to port 8080(I will add flask later). But, it doesn't work. The website keeps loading. Can I get some help?
My setting is:
<VirtualHost *:80>
DocumentRoot /wordpress/wp-content
SSLProxyEngine On
ProxyPreserveHost On
ServerName aa.mcmaster.ca
ProxyRequests off
ProxyPass / http://aas.mcmaster.ca/:8080
ProxyPassReverse / http://aaas.mcmaster.ca/:8080
</VirtualHost>
Thanks!
Use below ProxyPass and test.
ProxyPass / http://aa.mcmaster.ca:8080/
ProxyPassReverse / http://aa.mcmaster.ca:8080/

Gogs.io running on subdomain with port

I'm trying to run Gogs.io on an apache webserver along with a standard website, and I'm trying to have Gogs.io used on a subdomain rather than using my standard domain with a port.
Gogs.io runs on port 3000, and I want the url to be
http://gogs.example.net/
Rather than
http://example.net:3000/
Both my public IP with port and example.net:3000 work, but when trying to use gogs.example.net, I always get an AT&T DNS Error Assist page. I'm not sure what I'm doing wrong, as I had it working earlier until I tried to change the name of the subdomain in my apache config, but I changed it back when I started having issues, to no luck.
Here is my Apache config for the page:
<VirtualHost *:80>
ServerName gogs.example.net
ProxyPreserveHost On
ProxyPass / http://example.net:3000/
ProxyPassReverse / http://example.net:3000/
</VirtualHost>
This may be impossible, but any help would be greatly appreciated!
Fixed the issue by adding an A record to my domain
A Record: git -> 111.222.333.444
As well as modified the VirtualHost settings to include the subdomain in the ProxyPass and ProxyPassReverse
<VirtualHost *:80>
ServerName gogs.example.net
ProxyPreserveHost On
ProxyPass / http://git.example.net:3000/
ProxyPassReverse / http://git.example.net:3000/
</VirtualHost>

Apache Reverse Proxy Cookies not working

following scenario:
I have a webservice running on port 81.
I want to use apache(nginx would also be okay) as reverse proxy, running on port 80 and redirecting mail.domain.com to port 81.
This is working so far.. but my webservice is telling me, that i should activate cookies. Without proxy it's working.
I followed a lot of tutorials etc., but none of the tips worked so far.
This is how my virtualhost looks:
<virtualHost *:80>
ProxyPassReverseCookiePath / http://mail.domain.com
ServerName mail.domain.com:81
ProxyPass / http://127.0.0.1:81
ProxyPassReverse / http://127.0.0.1:81
ProxyPassReverseCookiePath http://myPublicIp:81 http://mail.domain.com
</VirtualHost>
If someone has an easier way with nginx doing this, pls also tell me.
Thanks a lot in advance!!
You probably need to do something like this:
<VirtualHost *:80>
ServerName mydomain.com
ProxyPass / http://mail.domain.com:81
ProxyPassReverse / http://mail.domain.com:81
ProxyPassReverseCookieDomain mydomain.com mail.domain.com
</VirtualHost>
In your example, you are using the CookiePath which is modify the path in the cookie and not the domain.

ProxyPass with a port in Apache Virtualhost does not work

I'm using WSO2 API Manager. I have fronted API Manager(tomcat) with an Apache HTTP Server.
For the URL api.abc.xyz.lk a public IP has been assigned. For that public IP a local IP which is 192.168.6.162 has been assigned. I have added a virtual-host to redirect all the http://api.abc.xyz.lk to http://192.168.6.162:9763/store.
What I'm trying to do here is redirect all the http://api.abc.xyz.lk requests to http://192.168.6.162:9763/store.
Below is the virtual-host block I use.
<Virtualhost *:80>
ServerName api.abc.xyz.lk
ServerAlias api.abc.xyz.lk
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://192.168.6.162:9763/store
ProxyPassReverse / http://192.168.6.162:9763/store
</Virtualhost>
The problem is
the URL that works is as below
http://api.abc.xyz.lk:9763/store
But actually what I want is
http://api.abc.xyz.lk
How can I fix this?
you need to modify this proxy pass
ProxyPass /store http://192.168.6.162:9763/store
ProxyPassReverse /store http://192.168.6.162:9763/store
this will do the trick..
make sure to enable the proxy ports in server, you can configure proxy ports by editing "catalina-server.xml" in $UES_HOME/repository/conf/tomcat/catalina-server.xml

Apache Config to send sub dirs to different servers - mod_proxy

We use Apache as a reverse proxy server. This has been working well, but I now need to have http://domain.com/sub1 proxy to serverA and http://domain.com/sub2 proxy to serverB. Is this possible? If so, what is the config for it?
Here is my existing config:
...
<VirtualHost 555.55.555.555:80>
ServerName domain.com
DocumentRoot c:/docroot
ProxyPass / http://serverA/
ProxyPassReverse / http://serverA/
</VirtualHost>
...
You've almost got it. You want something like:
ProxyPass /sub1 http://serverA/
ProxyPassReverse /sub1 http://serverA/
ProxyPass /sub2 http://serverB/
ProxyPassReverse /sub2 http://serverB/
Check out the documentation for the ProxyPass directive, there are some neat tricks you can do with it.