Standalone Web App with Apache reverse proxy

I would like to propose again a topic that I think is still without solution.

see for example Standalone Web Applications running behind a reverse proxy and other similar threads.

my forced scenario:

  1. the web application must be installed on a Windows server.
  2. the sample application (http://mysite.com:9000) must be available to users at http://mysite.com/myapp/

I have no experience with HAproxy and Nginx (which anyway are unavailable or not recommended on Windows).

not using a subdirectory is known to be solved quickly using Apache:
ProxyPass / http://mysite.com:5000/
ProxyPassReverse / http://mysite.com:5000/

using a subdirectory is also known not to work:
ProxyPass /myapp http://mysite.com:5000/
ProxyPassReverse /myapp http://mysite.com:5000/

here in the forum some people have often suggested to use the subdomain instead of the subdirectory: http://myapp.mysite.com

but this is impossible for me, because my clients can’t activate subdomains for my applications.

if I’m not wrong, here in the forum the requests of other users to be able to access a web application like http://mysite.com/myapp/ have been ignored by Xojo staff.

but how should I solve the problem?
leaving Xojo or losing my customers?

or is there a solution that I might have missed?

thank you.

for apache it was mentioned to enable mod_proxy and edit the config.

without install/setup your customer (it admin) have to open one port (forwarding) for each xojo web app.
the app itself is registered as windows service and can run also in a own “user” context.
with certificate (.crt) file you have also https.
for me alone i use always apps with a domain + port because it is easy to make ready.

thank you Markus.

Some of my customers are not allowed to manage these activities themselves, but are contractually obliged to ask their internet service provider.

My customers don’t like this and do it as little as possible. and only for strictly necessary things.

In addition, these customers have different suppliers of management software.

I am the ONLY supplier that creates these problems.
and it is pointed out to me.

I believe that Xojo should adapt to the world (in this case to Apache, HAproxy, Nginx), not the world to Xojo.

otherwise it ends up that having chosen Xojo, years ago, becomes a noose around the neck for the professional developer.

I hope someone here has a solution.

2 Likes

understand.

make a requirement

A
https://customerdomain.com/newapp
goto
localhost:5000

B
accessible via any free port => 1024
https://customerdomain.com:5000

and the it admin have fun and you are not accountable if something break.
plan b could be software as service on vps.

Lifeboat, by @Tim_Parnell might help you out with this.

Have a look

https://strawberrysw.com/lifeboat/

as far as I know Lifeboat uses Nginx on Linux

I believe you are right but I think Lifeboat has enhancements coming
Maybe contact the author and ask?

Will all traffic be coming from one IP afdress (for one client) ? If so Nginx (without a custom compile (think that is the correct term)) will not help you with load balancing if you are also considering that.

thank you Brian.

I’ll ask (or he can answer here, if he wants), but Nginx is officially not recommended on Windows.

anyway, I think that it should not be necessary to use plugins or applications like Lifeboat for this kind of problems.

with CGI these problems were not present (I speak from direct experience, since I still have some applications working in production).

Xojo staff has explained several times why CGI was abandoned.
but did not provide alternative solutions.
I think this is not correct.

yes, only one IP.

But I need to manage multiple applications, I’m not looking for a performance improvement.
at least right now.

To be fair, this is absolutely no issue of Xojo nor of your Xojo made app.
It completely up to you how you handle your traffic on your server and Xojo has no chance to change it.

Web 2.0 is very difficult to deploy multiple applications on servers with only IP address, no domain name and limited ports. Web 1.0 can solve this problem by using paths. Many server ports are not managed by ourselves.
At present, it is impossible to access Web 2.0 by path. I’m still using web 1.0 by xojo 2019r3.2.

I’m sorry, but I totally disagree.

what i have to do (but not only me, reading other previous threads) is present in Apache directives and probably (but i have no experience) also in HAproxy, Nginx and others.

maybe Apache designs and documents useless directives?

maybe Apache’s reverse proxy is a joke?

but it seems that Xojo only accepts the path “/” and doesn’t work if a subdirectory (e.g. “/myapp”) is present.

If you have time, read the thread I mentioned at the beginning.

I firmly believe that Xojo staff should take care of this problem.

but I’m afraid they won’t take care of it.
neither of this, nor of others (also reported by you, with great evidence, if I remember correctly).

I repeat that to me it does not seem a serious behavior.
nor convenient, because if Xojo Inc. continues to disappoint so many people, sooner or later it will pay the consequences.

for these reasons, I created this new thread, hoping that some of you guys have finally found a solution.

How much longer will you be able to go with 2019r32?

I have decided that my new project needs to be 2.0.

or I will leave Xojo.

no one will notice, but it seems that others well known guys have already done so.

even Lars, if I remember correctly.

Xojo apps bring their very own webserver to the start, which listens to a specific port, which you can alter.

Your app will never be accasible from a subdomain or a subdirectory out of the box, since this just not possible.

You always have to redirect the traffic internally. For that, you use a reverse proxy, which listens on a particular endpoint, such as another Port, a subdomain or a subdirectory, and redirects the traffic to the port of your application.

Xojo would have to provide plugins for the reverse proxy we’re using (Apache, NginX, HaProxy etc.), if would want to provide an easy setup. That is a tremendous amount of work, and it is just not Xojos task to configure your Server properly.

1 Like

This is a completely different discussion.

Traffic handling of Web 2 is similar to Web 2, it just lacks on a CGI-Script which handles the traffic for you over PERL. You still can write something similar by your own.

it make no sense in xojo because you have to use a free port if apache or IIS is the webserver.
http request are port 80 by default
https request are 443 by default
if you wrote at client
https://customerdomain.com/newapp
its usually
https://customerdomain.com:443/newapp
and because apache is listen at this port you can not use it too in xojo.
without any webserver you would have the nice url and default port for firewall free for one xojo app.

generally each open port (door) is somehow a security risk because the running software behind.
relevant is that security vulnerability are closed / the running web server is updated.

anybody have experience if apache or xojo is more safe?

@Lars_Lehmann

With CGI all this was possible, somehow.

then Xojo removes CGI for its own reasons and tells users to deal with it because it’s no longer his problem.

should I write my own scripts?

you can not be serious.

Take a deep breath and step back for a minute. Ask yourself a few questions:

  1. Is the tool I’m using working for me?
  2. Can I contact Xojo directly and ask them change the framework to work for me? (most companies do respond to financial incentives)
  3. At what point do the costs outweigh the benefits of the tool I’m struggling with?

You’re really trying to turn a screw with a hammer here. With Xojo Web it is not easy to configure an app at a sub-path. The web server within the framwork has a few expectations of url paths.

By trying to run your app at a certain path you start to have to balance which requests need to be sent to the app vs. which are regular static website requests yourself. In my opinion that challenge defeats the purpose of using this rapid app development tool.

There are a lot of things to say about the different points mentioned in this thread, however I don’t want to get into a public back and forth about drawbacks and features. That won’t get us anywhere.

I’m happy to help wherever I can, but Apache and using Windows as a server are simply not something I can comment on. Please reach out to me if you find yourself using Lifeboat and have any questions.

Best wishes,
Tim Parnell

3 Likes

This old post may be helpful:
https://forum.xojo.com/t/cgi-deployment-options/53986/26?u=anthony_g_cyphers