Drupal 7 and Coldfusion Proxy

Good morning everyone!

I have an issue that I am hoping is just a simple error on my part 

and
the collective wisdom of the gurus here might solve it.

My setup : RHEL 7, Nginx 1.10, PHP 7 and Drupal 7

My issue : trying to serve seamless paths for both Drupal and

ColdFusion without having to specify every possible path that coldfusion
applications exist in. I was hoping index.cfm would be automatically
used
via the index parameters but apparently only when try_files contains
$uri/. However that breaks drupal paths that aren’t physical folders…

The following config works - but as you can see the regex listing 

for
coldfusion application paths is less than stellar…

root /var/www/drupal;
index index.html index.php index.cfm;

location / {
try_files $uri /index.php?$query_string; # For Drupal >= 7
}

location @rewrite {
rewrite ^/(.*)$ /index.php?q=$1;
}

location ~ ^/sites/.*/files/styles/ {
try_files $uri @rewrite;
}

location ~* .php$ {
##
# Fastcgi cache
##
set $skip_cache 1;
if ($cache_uri != “null cache”) {
add_header X-Cache-Debug “$cache_uri $cookie_nocache
$arg_nocache$arg_comment $http_pragma $http_authorization”;
set $skip_cache 0;
}
fastcgi_cache_bypass $skip_cache;
fastcgi_cache evcccache;
fastcgi_cache_key $scheme$host$request_uri$request_method;
fastcgi_cache_valid any 5m;
#fastcgi_cache_use_stale updating;
fastcgi_cache_bypass $http_pragma;
fastcgi_cache_use_stale updating error timeout invalid_header
http_500;
try_files $uri $uri/ =404;
fastcgi_split_path_info ^(.+.php)(/.+)$;
include fastcgi_params;
fastcgi_read_timeout 300;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_intercept_errors on;
}

ColdFusion Proxy

##################
#find /var/www/drupal -type f -name ‘index.cfm’ |sed ‘s#(.)/.#\1#’
|sort -u
location ~* .(cfm|cfc)$ {
proxy_pass https://coldfusion_servers;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_intercept_errors on;
}

location ~*
^(/longpath/someapp|/anotherpath/anotherapp|/yetanotherpath/andanotherapp|anotherapppath/etcapp)
{
proxy_pass https://coldfusion_servers;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_intercept_errors on;
}

~Jeremy

On Tue, Jun 14, 2016 at 08:01:36AM -0700, Jeremiah Brock wrote:

Hi there,

My issue : trying to serve seamless paths for both Drupal and

ColdFusion without having to specify every possible path that coldfusion
applications exist in.

You may find it easiest to have a simple split in your url hierarchy
– perhaps have everything that should be handled by drupal be below
/drupal/; or have everything that should be handled by coldfusion be
below /coldfusion/; or do both of them.

nginx is not magic.

If you mix your urls with no easy way to know which should be handled by
drupal and which by coldfusion and which by something else, then you end
up with a complicated way to tell nginx how it should handle each
request.

I was hoping index.cfm would be automatically used
via the index parameters but apparently only when try_files contains
$uri/. However that breaks drupal paths that aren’t physical folders…

I don’t fully follow what you mean by that paragraph.

I suspect that that does not matter.

A request comes in. You want nginx to handle it in a particular way. The
way you tell nginx how to handle it is by writing in nginx.conf.

The following config works - but as you can see the regex listing for

coldfusion application paths is less than stellar…

That is:

location ~*

^(/longpath/someapp|/anotherpath/anotherapp|/yetanotherpath/andanotherapp|anotherapppath/etcapp)

That suggests that a request for /longpath/something should be handled
by drupal and not by coldfusion, yes?

And (with the rest of your config) a request for /longpath/someapp/a.php
should be handled by drupal too.

If you want to mix urls in a complicated way, you’re going to have to
unmix them in a complicated way in nginx.conf.

If you don’t want to unmix them in a complicated way in nginx.conf,
the easiest thing to do is not to mix them in a complicated way in the
first place.

I suppose you could (at the cost of significant efficiency, I suspect)
proxy everything to coldfusion, and then handle any 404 responses by
trying drupal. That might lead to a smaller or less-frequently-updated
nginx.conf.

But if you have the option to reorganise at least one of the “upstream”
url hierarchies, I’d suggest doing that instead.

Good luck with it,

f

Francis D. [email protected]

Thank you for the response Francis.

Unfortunately - I don’t have the luxury of separating out via a
hierarchy.

I have determined that what I am wanting to do is just simply not
possible
: ( .

~Jeremy