I would read this page: https://httpd.apache.org/docs/current/mod/mod_proxy.html#proxypassmatch
On Sun, Jul 2, 2023 at 1:03 PM Kaushal Shriyan <kaushalshri...@gmail.com> wrote: > Hi Frank, > > Thanks for the quick response. I will appreciate it if you can help me > understand by considering the below directive. I am not sure about placing > $1 to the target. Any examples which will be easy to understand? > > ProxyPass /index.html ! > ProxyPassMatch ^/(.+) http://localhost:3000/ > > Please suggest further and guide me. Thanks in advance. > > Best Regards, > > Kaushal > > On Sun, Jul 2, 2023 at 9:31 PM Frank Gingras <thu...@apache.org> wrote: > >> Try adding $1 to the target to use the captured value. >> >> Also, depending on the response from the backend, you may need a >> ProxyPassReverse directive. >> >> On Sun, Jul 2, 2023 at 11:41 AM Kaushal Shriyan <kaushalshri...@gmail.com> >> wrote: >> >>> Hi Frank, >>> >>> When I set the below in /etc/httpd/conf.d/phpnodejs.conf. When I hit >>> https://phpnodejs.mydomain.com which is the html content, the images >>> are broken and unable to load javascript, CSS etc... >>> >>> ProxyPass /index.html ! >>> ProxyPassMatch ^/(.+) http://localhost:3000/ >>> >>> #cat /etc/httpd/conf.d/phpnodejs.conf >>> <VirtualHost *:80> >>> ServerName phpnodejs.mydomain.com >>> Redirect / https://phpnodejs.mydomain.com/ >>> </VirtualHost> >>> <VirtualHost *:443> >>> DocumentRoot /var/www/html/htmlcode >>> DirectoryIndex index.html >>> ServerName phpnodejs.mydomain.com >>> Header add Access-Control-Allow-Origin "*" >>> LogLevel debug >>> SSLEngine on >>> SSLCertificateFile /etc/letsencrypt/live/ >>> phpnodejs.mydomain.com/cert.pem >>> SSLCertificateKeyFile /etc/letsencrypt/live/ >>> phpnodejs.mydomain.com/privkey.pem >>> SSLCertificateChainFile /etc/letsencrypt/live/ >>> phpnodejs.mydomain.com/chain.pem >>> Header always set Strict-Transport-Security "max-age=63072000; >>> includeSubDomains" >>> ProxyPass /index.html ! >>> ProxyPassMatch ^/(.+) http://localhost:3000/ >>> </VirtualHost> >>> >>> Please guide me. Thanks in advance. >>> >>> Best Regards, >>> >>> Kaushal >>> >>> >>> On Sun, Jul 2, 2023 at 8:57 PM Frank Gingras <thu...@apache.org> wrote: >>> >>>> ^/(.+) will already match /demo, why are you changing the expression? >>>> >>>> On Sun, Jul 2, 2023 at 10:42 AM Kaushal Shriyan < >>>> kaushalshri...@gmail.com> wrote: >>>> >>>>> Hi Frank, >>>>> >>>>> Thanks a lot. It worked perfectly. I have a follow up question for >>>>> /demo path (as part of node.js code so /demo has all nodejs code) just as >>>>> an improvement . I modified the ProxyPassMatch directive as per the below >>>>> example and it returned http 404. >>>>> >>>>> ProxyPassMatch ^/demo(.+) http://localhost:3000/ >>>>> >>>>> Am I missing anything? Apologies for bugging you. >>>>> >>>>> Please guide me. Thanks in advance. >>>>> >>>>> Best Regards, >>>>> >>>>> Kaushal >>>>> >>>>> >>>>> On Sun, Jul 2, 2023 at 8:00 AM Frank Gingras <thu...@apache.org> >>>>> wrote: >>>>> >>>>>> This thread is getting very tiresome. So, let's summarize: >>>>>> >>>>>> - You want to request /, serve index.html >>>>>> - For all other requests, proxy internally >>>>>> >>>>>> As such, keep the ProxyPass /index.html ! for clarity and change your >>>>>> existing ProxyPass directive to: >>>>>> >>>>>> ProxyPassMatch ^/(.+) http://localhost:3000/ >>>>>> >>>>>> In short, this means that requesting / will not match, and requesting >>>>>> /foo will proxy. >>>>>> >>>>>> On Sat, Jul 1, 2023 at 9:22 PM Kaushal Shriyan < >>>>>> kaushalshri...@gmail.com> wrote: >>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Sun, Jul 2, 2023 at 6:20 AM Kaushal Shriyan < >>>>>>> kaushalshri...@gmail.com> wrote: >>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Sun, Jul 2, 2023 at 6:14 AM Kaushal Shriyan < >>>>>>>> kaushalshri...@gmail.com> wrote: >>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On Sat, Jul 1, 2023 at 7:50 AM Kaushal Shriyan < >>>>>>>>> kaushalshri...@gmail.com> wrote: >>>>>>>>> >>>>>>>>>> Hi Frank, >>>>>>>>>> >>>>>>>>>> Thanks for the email response and much appreciated. I added the >>>>>>>>>> ProxyPass /index.html ! directive in >>>>>>>>>> /etc/httpd/conf.d/phpnodejs.conf >>>>>>>>>> >>>>>>>>>> #cat /etc/httpd/conf.d/phpnodejs.conf >>>>>>>>>> <VirtualHost *:80> >>>>>>>>>> ServerName phpnodejs.mydomain.com >>>>>>>>>> Redirect / https://phpnodejs.mydomain.com/ >>>>>>>>>> </VirtualHost> >>>>>>>>>> <VirtualHost *:443> >>>>>>>>>> DocumentRoot /var/www/html/htmlcode >>>>>>>>>> ServerName phpnodejs.mydomain.com >>>>>>>>>> Header add Access-Control-Allow-Origin "*" >>>>>>>>>> SSLEngine on >>>>>>>>>> SSLCertificateFile /etc/letsencrypt/live/ >>>>>>>>>> phpnodejs.mydomain.com/cert.pem >>>>>>>>>> SSLCertificateKeyFile /etc/letsencrypt/live/ >>>>>>>>>> phpnodejs.mydomain.com/privkey.pem >>>>>>>>>> SSLCertificateChainFile /etc/letsencrypt/live/ >>>>>>>>>> phpnodejs.mydomain.com/chain.pem >>>>>>>>>> Header always set Strict-Transport-Security >>>>>>>>>> "max-age=63072000; includeSubDomains" >>>>>>>>>> ProxyPass /index.html ! >>>>>>>>>> ProxyPass / http://localhost:3000/ >>>>>>>>>> </VirtualHost> >>>>>>>>>> >>>>>>>>>> # apachectl configtest >>>>>>>>>> Syntax OK >>>>>>>>>> #apachectl -S >>>>>>>>>> VirtualHost configuration: >>>>>>>>>> *:80 phpnodejs.mydomain.com >>>>>>>>>> (/etc/httpd/conf.d/phpnodejs.conf:1) >>>>>>>>>> *:443 phpnodejs.mydomain.com >>>>>>>>>> (/etc/httpd/conf.d/phpnodejs.conf:5) >>>>>>>>>> ServerRoot: "/etc/httpd" >>>>>>>>>> Main DocumentRoot: "/var/www/html" >>>>>>>>>> Main ErrorLog: "/etc/httpd/logs/error_log" >>>>>>>>>> Mutex mpm-accept: using_defaults >>>>>>>>>> Mutex cache-socache: using_defaults >>>>>>>>>> Mutex authdigest-opaque: using_defaults >>>>>>>>>> Mutex watchdog-callback: using_defaults >>>>>>>>>> Mutex proxy-balancer-shm: using_defaults >>>>>>>>>> Mutex rewrite-map: using_defaults >>>>>>>>>> Mutex ssl-stapling-refresh: using_defaults >>>>>>>>>> Mutex authdigest-client: using_defaults >>>>>>>>>> Mutex lua-ivm-shm: using_defaults >>>>>>>>>> Mutex ssl-stapling: using_defaults >>>>>>>>>> Mutex proxy: using_defaults >>>>>>>>>> Mutex authn-socache: using_defaults >>>>>>>>>> Mutex ssl-cache: using_defaults >>>>>>>>>> Mutex default: dir="/run/httpd/" mechanism=default >>>>>>>>>> PidFile: "/run/httpd/httpd.pid" >>>>>>>>>> Define: DUMP_VHOSTS >>>>>>>>>> Define: DUMP_RUN_CFG >>>>>>>>>> User: name="apache" id=48 >>>>>>>>>> Group: name="apache" id=48 >>>>>>>>>> # >>>>>>>>>> >>>>>>>>>> when I hit https://phpnodejs.mydomain.com/ it still points to >>>>>>>>>> the nodejs server.js file located in /var/www/html/nodejssl. For >>>>>>>>>> testing >>>>>>>>>> purposes, I stopped the node js code to execute. I get the below >>>>>>>>>> message on >>>>>>>>>> the browser which is expected behaviour. >>>>>>>>>> >>>>>>>>>> [image: image.png] >>>>>>>>>> >>>>>>>>>> I am still unable to render the index.html file from the document >>>>>>>>>> root in /var/www/html/htmlcode which I created a new folder for >>>>>>>>>> testing >>>>>>>>>> purposes. >>>>>>>>>> >>>>>>>>>> Please suggest and guide me. Thanks in advance. >>>>>>>>>> >>>>>>>>>> Best Regards, >>>>>>>>>> >>>>>>>>>> Kaushal >>>>>>>>>> >>>>>>>>> >>>>>>>>> Hi, >>>>>>>>> >>>>>>>>> I have referred to >>>>>>>>> https://httpd.apache.org/docs/2.4/mod/mod_dir.html by adding >>>>>>>>> DirectoryIndex index.html directive in 443 virtualhost. The issue >>>>>>>>> still >>>>>>>>> persists. >>>>>>>>> >>>>>>>>> #cat /etc/httpd/conf.d/phpnodejs.conf >>>>>>>>> <VirtualHost *:80> >>>>>>>>> ServerName phpnodejs.mydomain.com >>>>>>>>> Redirect / https://phpnodejs.mydomain.com/ >>>>>>>>> </VirtualHost> >>>>>>>>> <VirtualHost *:443> >>>>>>>>> DocumentRoot /var/www/html/htmlcode >>>>>>>>> DirectoryIndex index.html >>>>>>>>> ServerName phpnodejs.mydomain.com >>>>>>>>> Header add Access-Control-Allow-Origin "*" >>>>>>>>> SSLEngine on >>>>>>>>> SSLCertificateFile /etc/letsencrypt/live/ >>>>>>>>> phpnodejs.mydomain.com/cert.pem >>>>>>>>> SSLCertificateKeyFile /etc/letsencrypt/live/ >>>>>>>>> phpnodejs.mydomain.com/privkey.pem >>>>>>>>> SSLCertificateChainFile /etc/letsencrypt/live/ >>>>>>>>> phpnodejs.mydomain.com/chain.pem >>>>>>>>> Header always set Strict-Transport-Security >>>>>>>>> "max-age=63072000; includeSubDomains" >>>>>>>>> ProxyPass /index.html ! >>>>>>>>> ProxyPass / http://localhost:3000/ >>>>>>>>> </VirtualHost> >>>>>>>>> >>>>>>>>> Please suggest further and guide me. Thanks in advance. >>>>>>>>> >>>>>>>>> Best Regards, >>>>>>>>> >>>>>>>>> Kaushal >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Further to the earlier email, I am sharing the log files. >>>>>>>> >>>>>>>> #cd /var/log/httpd/ >>>>>>>> #pwd >>>>>>>> /var/log/httpd >>>>>>>> # cat access_log >>>>>>>> 172.16.16.45 - - [02/Jul/2023:06:17:19 +0530] "GET / HTTP/1.1" 200 >>>>>>>> 11 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) >>>>>>>> Gecko/20100101 Firefox/114.0" >>>>>>>> 172.16.16.45 - - [02/Jul/2023:06:17:58 +0530] "GET >>>>>>>> /nodejssl/server.js HTTP/1.1" 200 11 "-" "Mozilla/5.0 (Macintosh; >>>>>>>> Intel Mac >>>>>>>> OS X 10.15; rv:109.0) Gecko/20100101 Firefox/114.0" >>>>>>>> 172.16.16.45 - - [02/Jul/2023:06:18:03 +0530] "GET / HTTP/1.1" 200 >>>>>>>> 11 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) >>>>>>>> Gecko/20100101 Firefox/114.0" >>>>>>>> # cat error_log >>>>>>>> [Sun Jul 02 06:17:14.849472 2023] [suexec:notice] [pid 31795:tid >>>>>>>> 31795] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) >>>>>>>> [Sun Jul 02 06:17:14.880212 2023] [ssl:warn] [pid 31795:tid 31795] >>>>>>>> AH01873: Init: Session Cache is not configured [hint: SSLSessionCache] >>>>>>>> [Sun Jul 02 06:17:14.881405 2023] [http2:warn] [pid 31795:tid >>>>>>>> 31795] AH10034: The mpm module (prefork.c) is not supported by >>>>>>>> mod_http2. >>>>>>>> The mpm determines how things are processed in your server. HTTP/2 has >>>>>>>> more >>>>>>>> demands in this regard and the currently selected mpm will just not do. >>>>>>>> This is an advisory warning. Your server will continue to work, but the >>>>>>>> HTTP/2 protocol will be inactive. >>>>>>>> [Sun Jul 02 06:17:14.882256 2023] [lbmethod_heartbeat:notice] [pid >>>>>>>> 31795:tid 31795] AH02282: No slotmem from mod_heartmonitor >>>>>>>> [Sun Jul 02 06:17:14.887938 2023] [mpm_prefork:notice] [pid >>>>>>>> 31795:tid 31795] AH00163: Apache/2.4.57 (IUS) OpenSSL/1.0.2k-fips >>>>>>>> configured -- resuming normal operations >>>>>>>> [Sun Jul 02 06:17:14.887993 2023] [core:notice] [pid 31795:tid >>>>>>>> 31795] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND' >>>>>>>> # >>>>>>>> >>>>>>>> Best Regards, >>>>>>>> >>>>>>>> Kaushal >>>>>>>> >>>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> I have enabled debug logging by adding LogLevel debug in 443 >>>>>>> virtualhost. >>>>>>> >>>>>>> #cat /etc/httpd/conf.d/phpnodejs.conf >>>>>>> <VirtualHost *:80> >>>>>>> ServerName phpnodejs.mydomain.com >>>>>>> Redirect / https://phpnodejs.mydomain.com/ >>>>>>> </VirtualHost> >>>>>>> <VirtualHost *:443> >>>>>>> DocumentRoot /var/www/html/htmlcode >>>>>>> DirectoryIndex index.html >>>>>>> ServerName phpnodejs.mydomain.com >>>>>>> Header add Access-Control-Allow-Origin "*" >>>>>>> LogLevel debug >>>>>>> SSLEngine on >>>>>>> SSLCertificateFile /etc/letsencrypt/live/ >>>>>>> phpnodejs.mydomain.com/cert.pem >>>>>>> SSLCertificateKeyFile /etc/letsencrypt/live/ >>>>>>> phpnodejs.mydomain.com/privkey.pem >>>>>>> SSLCertificateChainFile /etc/letsencrypt/live/ >>>>>>> phpnodejs.mydomain.com/chain.pem >>>>>>> Header always set Strict-Transport-Security >>>>>>> "max-age=63072000; includeSubDomains" >>>>>>> ProxyPass /index.html ! >>>>>>> ProxyPass / http://localhost:3000/ >>>>>>> </VirtualHost> >>>>>>> >>>>>>> debug apache error log file -> http://sprunge.us/kndkvL >>>>>>> >>>>>>> Please suggest further and guide me. Thanks in advance. >>>>>>> >>>>>>> Best Regards, >>>>>>> >>>>>>> Kaushal >>>>>>> >>>>>>