11 Replies Latest reply on Apr 14, 2008 7:35 AM by cd_2

    Oracle XE & Apex, Apache, and reverse proxy not working

    458566
      Hi All,

      I am going crazy as I feel that I have tried everything, but I still can't seem to get this working...

      I have a Linux server running VMWare. Inside, I have 2 VM's - one apache, one Oracle XE. Both of these are working, as I can access ApEx from inside my network, SQLPlus, etc..., and also able to hit the website I am hosting.

      What I really was hoping to do was point a particular url (sub-directory is maybe the better word) to Apex (www.my-domain.com/TEST/) so www.my-domain.com goes to my website as per normal, but if the user puts in /Test/ , this would be re-directed internally to the Oracle Apex...

      So far, I haven't been able to get it to work. I followed this example:
      Re: Change Database Homepage Port

      but no luck. Someone suggested changing the port to 80, but I get errors in the listener.log when I do. I do get errors in the apache error.log :
      [Fri Mar 07 08:57:04 2008] [error] [client 10.0.0.50] client denied by server configuration: proxy:http://10.0.0.21:8080/apex/

      I was hoping I wouldn't have to open port 8080 to the outside - do I have to?

      Any thoughts would be greatly appreciated...

      Corey
        • 1. Re: Oracle XE & Apex, Apache, and reverse proxy not working
          cd_2
          Have you checked if one VM (apache) can connect to the other VM (apex) directly?

          C.
          • 2. Re: Oracle XE & Apex, Apache, and reverse proxy not working
            458566
            Hi cd,

            I can ping from one from the other - does that answer the question? I don't have a browser on either VM as they are the 'server' editions - and I didn't want to add any un-needed apps.

            If I must for the sake of testing then I will - or is there another way?

            Thanks for looking at it though,

            Corey
            PS - when I attempt to change the listener port (in SQL Plus) using the dbms_xdb.sethttpport('80') - it is successfull - but I then get this in the listener logs:
            Error listening on: (Description=(Address=(Protocol=tcp)(Port=80)(Host=))(Presentation=HTTP)(Session=RAW))
            Linux Error: 13: Permission denied

            Message was edited by:
            Gordster
            • 3. Re: Oracle XE & Apex, Apache, and reverse proxy not working
              cd_2
              You could try to telnet from the apache VM to the XE VM and check if port 1521/8080 is available. Are there any firewall settings in any of the VMs?

              Can't say I've encountered such an error message yet. What happens if you change the http port back to 8080?

              C.
              • 4. Re: Oracle XE & Apex, Apache, and reverse proxy not working
                458566
                Hi Cd.

                I tried telnet and both 1521/8080 say:

                Connected to 10.0.0.21.
                Escape character is '^]'.


                When I change it back, the listener starts normally for 8080...

                Corey
                • 5. Re: Oracle XE & Apex, Apache, and reverse proxy not working
                  439244
                  I recommend to look at my post at:
                  How to configure Virtual Hosts in Oracle XE - Multiple Domain Names

                  That will explain how to get everything up & running in not time. I do have setup a Fedora 6 hosting different domains and parsing on each Virtual Domain different technologies like: PHP, Oracle APEX & Ruby on Rails applications for each virtual domain in the same machine =)

                  Good Luck D.
                  • 6. Re: Oracle XE & Apex, Apache, and reverse proxy not working
                    458566
                    I read through your post, and I have tried many different methods mentioned, but I'm still not there yet... :`-(

                    Using the following in my virtual host config has gotten me close:

                    <virtualHost *:80>
                    Servername my-domain.ca
                    ServerAlias www.my-domain.ca *.my-domain.ca
                    ...
                    SetEnv force-proxy-request-1.0 1
                    SetEnv proxy-nokeepalive 1

                    ProxyPass /IAG http://10.0.0.21:8080/apex
                    ProxyPass /i http://10.0.0.21:8080/i
                    ProxyPass /sys http://10.0.0.21:8080/sys
                    <Location /IAG>
                    Order allow,deny
                    Allow from all
                    ProxyPassReverse http://10.0.0.21:8080/apex
                    </Location>
                    <Location /i>
                    ProxyPassReverse http://10.0.0.21:8080/i
                    </Location>
                    <Location /sys>
                    ProxyPassReverse http://10.0.0.21:8080/sys
                    </Location>
                    </VirtualHost>

                    So I can go to my-domain.ca and see my html page, and I can then go to my-domain.ca/IAG and I get the Apex login page!!!

                    BUT, when I enter my credentials and click login, I get this as a URL:
                    http://www.my-domain.ca/IAG/f?p=4550:1:4443300408734642::::FSP_AFTER_LOGIN_URL:\f?p=4500|1000|3197531567505668\
                    and I am still at the login screen...

                    And when I log into Apex from a PC inside my network as Admin (workspace internal) and check Login Attempts - I see that my login attempt was
                    "Normal, successful authentication"

                    I am quite perplexed...

                    Corey


                    I did try using:
                    RewriteRule ^/IAG$ http://www.my-domain.ca/IAG/apex/ [R]
                    RewriteRule ^/apex/$ http://10.0.0.21:8080/apex/ [P]
                    RewriteRule ^/apex/(.*)$ http://10.0.0.21:8080/apex/$1 [P]

                    ProxyPass /IAG http://10.0.0.21:8080/
                    ProxyPassReverse /IAG http://10.0.0.21:8080/

                    instead of the above code, but www.my-domain.ca/IAG takes me to the Oracle License page (www.my-domain.ca/IAG/apex is the url). And if I add 'apex' to the end (www.my-domain.ca/IAG/apex/apex), I get a new URL of http://apex/apex/f?p=4550:1 and the Oracle login page, but with no images.

                    And if I attempt to log in, I get an Error on Page javascript icon in the browser (yes I know - evil IE).

                    Corey

                    Message was edited by:
                    Gordster
                    • 7. Re: Oracle XE & Apex, Apache, and reverse proxy not working
                      458566
                      So, I have also found that I posted wrongly in the last post. If I put www.my-domain.ca/IAG in the url, I get a 404 error. But if I put /IAG/apex, I get the login page. I then tried putting in an application ID:
                      (www.my-domain.ca/IAG/apex/f?p=103:1)

                      And I get the application login!!! And when I enter my credentials it works!!! All until I try to log out. When I log out, I get:
                      www.my-domain.ca/IAG/www_flow_custom_auth_std.logout?p_this_flow=103&pnext_flow_page_sess=103:1
                      as the url...

                      Corey
                      • 8. Re: Oracle XE & Apex, Apache, and reverse proxy not working
                        439244
                        Just configure this in your Apache Virtual Hosts :

                        <VirtualHost *:80>
                        ServerName www.my-domain.ca
                        ServerAdmin webmaster@my-domain.ca

                        RewriteEngine on
                        RewriteRule ^/$ http://www.my-domain.ca/apex/ [R]
                        RewriteRule ^/apex/$ http://keops:8080/apex/f?p=100:1 [P]
                        RewriteRule ^/apex/(.*)$ http://keops:8080/apex/$1 [P]

                        ProxyPass / http://keops:8080/
                        ProxyPassReverse / http://keops:8080/

                        <Location />
                        Order allow,deny
                        Allow from all
                        </Location>
                        </VirtualHost>

                        Don't worry about the /i /sys /IAG... when you configure a virtual host that will be the root of that domain... Note: Replace Keops with the name of your machine [ hostname -a ] assuming that OracleXE can work when opening an URL:

                        http://keops:8080/apex => Is a valid OracleXE Installation. otherwise you will have a problem with the images and is nothing to do with the Apache Proxy redirection is a problem with the Oracle Listener due to a wrong configuration of the /etc/hosts file.

                        Hope that get you going !!!.

                        Currently working: [ http://www.announcefree.com ]
                        • 9. Re: Oracle XE & Apex, Apache, and reverse proxy not working
                          cd_2
                          Say, I've always had problems to display flash charts from APEX with just the Proxy settings. Does your config solve that?

                          C.
                          • 10. Re: Oracle XE & Apex, Apache, and reverse proxy not working
                            Dietmar Aust
                            Hi C.,

                            no, it shouldn't.

                            You need to configure the DBMS_EPG for that.

                            If the Apache is for example running on www.myserver.de on port 80, you can use the following configuration:
                            BEGIN
                              DBMS_EPG.set_dad_attribute (
                                dad_name   => 'APEX',
                                attr_name  => 'cgi-environment-list',
                                attr_value => 'HTTP_HOST=www.myserver.de:80');
                            END;
                            /
                            
                              
                            ### to remove: 
                            BEGIN
                              DBMS_EPG.delete_dad_attribute (
                                dad_name   => 'APEX',
                                attr_name  => 'cgi-environment-list');
                            END;
                            /
                            Does that work for you?

                            Regards,
                            ~Dietmar.
                            • 11. Re: Oracle XE & Apex, Apache, and reverse proxy not working
                              cd_2
                              Thanks Dietmar, I'll try it in the next few days and let you know.

                              C.