Re: [galaxy-dev] "This link may not be followed from within Galaxy" using nginx and upload module.

2012-11-16 Thread Nate Coraor
On Nov 16, 2012, at 1:15 AM, Marcelo Timmerman wrote:

> Any idea would be appreciated. I get a "This link may not be followed from 
> within Galaxy" after following these steps:
> 
> Get Data -> Upload File -> File Format:
> Type "lpe" -> select "lped" from autocomplete list.
> 
> I've compiled latest stable nginx in CentOS 6.3 with upload module 
> http://www.grid.net.ru/nginx/upload.en.html
> Galaxy being started by galaxy user
> nginx started by root user
> (this scenario reports a nginx worker process owned by galaxy)
> I'm serving Galaxy at a subdirectory as explained in 
> http://wiki.galaxyproject.org/Admin/Config/Performance/nginx%20Proxy
> I'm not using External user authentication
> 
> I suspect this is a problem in nginx.conf upload module directives.
> Do you know if it's ok to change 
> 
> location /_x_accel_redirect/ {
> 
> with
> 
> location /galaxy/_x_accel_redirect/ {
> 
> ?

Hi Marcelo,

For the moment, we can ignore /_x_accel_redirect/, since that is only used for 
downloading data from Galaxy.

> Besides I couldn't find an _upload_done directory. 
> Do you have an "_upload_done" or "_upload" directory? 
> Where it's located?

This is an internal path used by nginx and is not exposed.

> 
> This is my nginx.conf
> 
> server {
>... more directives
> location /galaxy {
> proxy_pass http://galaxy_app;
> proxy_set_header X-Forwarded-Host $host;
> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
> }
> location /galaxy/static {
> alias /home/galaxy/galaxy-dist/static;
> expires 24h;
> }
> ... # more directives 
> location /galaxy/_x_accel_redirect/ {
> internal;
> alias /;
> }
> location /galaxy/_upload {
> upload_store /home/galaxy/galaxy-dist/database/tmp/upload_store;
> upload_pass_form_field "";
> upload_set_form_field "__${upload_field_name}__is_composite" 
> "true";
> upload_set_form_field "__${upload_field_name}__keys" "name path";
> upload_set_form_field "${upload_field_name}_name" 
> "$upload_file_name";
> upload_set_form_field "${upload_field_name}_path" 
> "$upload_tmp_path";
> upload_pass_args on;
> upload_pass /_upload_done;
> }
> location /galaxy/_upload_done {
> set $dst /tool_runner/index;
> if ($args ~ nginx_redir=([^&]+)) {
> set $dst $1;
> }
> rewrite "" $dst;
> }

The problem might be here.  Upon upload completion, you redirect to 
/_upload_done, but the path set up to handle those requests is 
/galaxy/_upload_done.

The other potential problem is that if you haven't set 'nginx_upload_path' in 
universe_wsgi.ini to '/galaxy/_upload', then the tool form is POSTing to the 
wrong path.

You should be able to use /galaxy/_upload and /galaxy/_upload_done.  However, 
for this to work, you will need to change 'upload_pass' to 
'/galaxy/_upload_done' above and set 'nginx_upload_path' in universe_wsgi.ini 
to '/galaxy/_upload'.

--nate

> }
> 
> Cheers
> ___
> Please keep all replies on the list by using "reply all"
> in your mail client.  To manage your subscriptions to this
> and other Galaxy lists, please use the interface at:
> 
>  http://lists.bx.psu.edu/


___
Please keep all replies on the list by using "reply all"
in your mail client.  To manage your subscriptions to this
and other Galaxy lists, please use the interface at:

  http://lists.bx.psu.edu/


[galaxy-dev] "This link may not be followed from within Galaxy" using nginx and upload module.

2012-11-15 Thread Marcelo Timmerman

Any idea would be appreciated. I get a "This link may not be followed from 
within Galaxy" after following these steps:

Get Data -> Upload File -> File Format:
Type "lpe" -> select "lped" from autocomplete list.

I've compiled latest stable nginx in CentOS 6.3 with upload module 
http://www.grid.net.ru/nginx/upload.en.html
Galaxy being started by galaxy user
nginx started by root user
(this scenario reports a nginx worker process owned by galaxy)
I'm serving Galaxy at a subdirectory as explained in 
http://wiki.galaxyproject.org/Admin/Config/Performance/nginx%20Proxy
I'm not using External user authentication

I suspect this is a problem in nginx.conf upload module directives.
Do you know if it's ok to change 

location /_x_accel_redirect/ {

with

location /galaxy/_x_accel_redirect/ {

?

Besides I couldn't find an _upload_done directory. 
Do you have an "_upload_done" or "_upload" directory? 
Where it's located?

This is my nginx.conf

server {
   ... more directives
location /galaxy {
proxy_pass http://galaxy_app;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /galaxy/static {
alias /home/galaxy/galaxy-dist/static;
expires 24h;
}
... # more directives 
location /galaxy/_x_accel_redirect/ {
internal;
alias /;
}
location /galaxy/_upload {
upload_store /home/galaxy/galaxy-dist/database/tmp/upload_store;
upload_pass_form_field "";
upload_set_form_field "__${upload_field_name}__is_composite" "true";
upload_set_form_field "__${upload_field_name}__keys" "name path";
upload_set_form_field "${upload_field_name}_name" 
"$upload_file_name";
upload_set_form_field "${upload_field_name}_path" 
"$upload_tmp_path";
upload_pass_args on;
upload_pass /_upload_done;
}
location /galaxy/_upload_done {
set $dst /tool_runner/index;
if ($args ~ nginx_redir=([^&]+)) {
set $dst $1;
}
rewrite "" $dst;
}
}

Cheers
  ___
Please keep all replies on the list by using "reply all"
in your mail client.  To manage your subscriptions to this
and other Galaxy lists, please use the interface at:

  http://lists.bx.psu.edu/