ChatGPT解决这个技术问题 Extra ChatGPT

在 apache http 服务器上设置 mod_proxy

I wanted to reverse proxy a web service from my tomcat server using apache web server. I have modified the httpd.conf

LoadModule proxy_module modules/mod_proxy.so

<Directory />
    AllowOverride none
    Require all denied
</Directory>

ProxyPass         /ROOT  http://localhost:8080/ROOT
ProxyPassReverse  /ROOT  http://localhost:8080/ROOT

My Tomcat server runs on port 8080, now when I run localhost/ROOT, I get error 500 internal server error.

This last entry in the error_log is:

[Thu Jul 04 14:17:00.097359 2013] [proxy:warn] [pid 18980:tid 4476780544] [client 127.0.0.1:50525] AH01144: No protocol handler was valid for the URL /ROOT. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

access_log

127.0.0.1 - - [04/Jul/2013:14:17:00 -0400] "GET /ROOT HTTP/1.1" 500 528

Any idea on what I am doing wrong here?

ProxyPassReverse localhost:8080/ROOT /ROOT
Any logs in the logs\access.log?
Hey, so that did not work, this is how httpd.conf looks like LoadModule proxy_module modules/mod_proxy.so AllowOverride none Require all denied ProxyPass /ROOT localhost:8080/ROOT ProxyPassReverse localhost:8080/ROOT /ROOT

u
user1386101

So it took some time but I figured out the way to do it. There is one more module which needs to be loaded. This is what the httpd.conf looks like

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

<Directory />
    AllowOverride none
    Require all denied
</Directory>

ProxyPass         /ROOT  http://localhost:8080/ROOT
ProxyPassReverse  /ROOT  http://localhost:8080/ROOT

This works for sure. :)


sudo a2enmod proxy sudo a2enmod proxy_http sudo service apache2 restart
THIS proxy_http is required!
Coming from a world where I used mod_proxy and mod_proxy_ajp for YEARS, you need to replace ajp with the http module in non-java configurations. The clue is this error in the Apache logs: AH01144: No protocol handler was valid for the URL
H
Horen

Since it's easy to overlook, pay attention to @muka's comment:

sudo a2enmod proxy  
sudo a2enmod proxy_http  
sudo service apache2 restart

Make sure to enable both modules proxy and proxy_http!


^this saved me from my 20-hour agony. Thanks!
G
Greg

In addition to the other fine answers, if you're proxying to an https endpoint, you need to enable mod_ssl and add SSLProxyEngine on to your vhost


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅