Nginx обрезает некоторые заголовки при просмотре частных наборов данных в Fiware CKAN - PullRequest
0 голосов
/ 20 января 2019

Я настраиваю CKAN v2.7.2 (обслуживается по HTTP с использованием веб-сервера Apache) и хочу получить доступ с помощью обратного прокси-сервера Nginx (версия 1.13.3). Требуется смонтировать ckan в точке монтирования / ckan, таким образом добавили следующее в файл ckan.ini

ckan.root_path = /ckan/{{LANG}}

Кроме того, я могу получить доступ к CKAN только с помощью Nginx. При настройке Nginx с CKAN установка не работает должным образом с использованием обратного прокси-сервера Nginx, тогда как Base CKAN, т. Е. Без Nginx, работает отлично:

Я не могу успешно просматривать частные наборы данных, тогда как публичные наборы данных работают отлично.

Невозможно просмотреть частный набор данных в CKAN, используя Nginx

Мои журналы Apache для CKAN имеют вид :

[Fri Jan 11 06:21:46.242529 2019] [wsgi:error] [pid 2178:tid   139975718889216] 2019-01-11 06:21:46,242 DEBUG [ckan.logic] check   access OK - dashboard_activity_list user=admin

 [Fri Jan 11 06:21:46.283912 2019] [wsgi:error] [pid 2178:tid   139975718889216] 2019-01-11 06:21:46,283 DEBUG [ckan.lib.base] rendering   /usr/lib/ckan/default/src/ckan/ckan/templates/snippets/home_breadcrumb_ item.html[jinja2]

 [Fri Jan 11 06:21:46.285169 2019] [wsgi:error] [pid 2178:tid   139975718889216] 2019-01-11 06:21:46,285 DEBUG [ckan.lib.base] rendering   /usr/lib/ckan/default/src/ckan/ckan/templates/package/snippets/  resources.html [jinja2]

 [Fri Jan 11 06:21:46.292565 2019] [wsgi:error] [pid 2178:tid   139975718889216] 2019-01-11 06:21:46,292 DEBUG [ckan.lib.base] rendering   /usr/lib/ckan/default/src/ckan/ckan/templates/snippets/social.html [jinja2]

 [Fri Jan 11 06:21:46.294569 2019] [wsgi:error] [pid 2178:tid   139975718889216] 2019-01-11 06:21:46,294 DEBUG [ckan.logic] check access OK 
 - package_update user=admin

 [Fri Jan 11 06:21:46.295155 2019] [wsgi:error] [pid 2178:tid   139975718889216] 2019-01-11 06:21:46,295 DEBUG [ckan.lib.base] rendering   /usr/lib/ckan/default/src/ckan/ckanext/datastore/templates/package/snippets /data_api_button.html [jinja2]

 [Fri Jan 11 06:21:46.299369 2019] [wsgi:error] [pid 2178:tid   139975718889216] 2019-01-11 06:21:46,299 DEBUG [ckan.lib.base] rendering   /usr/lib/ckan/default/src/ckan/ckan/templates/package/snippets/  resource_views_list.html [jinja2]

 [Fri Jan 11 06:21:46.307521 2019] [wsgi:error] [pid 2178:tid   139975718889216] 2019-01-11 06:21:46,307 DEBUG [ckan.lib.base] rendering   /usr/lib/ckan/default/src/ckan/ckan/templates/package/snippets/  resource_views_list_item.html [jinja2]

 [Fri Jan 11 06:21:46.314911 2019] [wsgi:error] [pid 2178:tid   139975718889216] 2019-01-11 06:21:46,314 DEBUG [ckan.lib.base] rendering   /usr/lib/ckan/default/src/ckan/ckan/templates/package/snippets/  resource_view.html [jinja2]

 [Fri Jan 11 06:21:46.338195 2019] [wsgi:error] [pid 2178:tid   139975718889216] 2019-01-11 06:21:46,338 DEBUG [ckan.lib.base] rendering   /usr/lib/ckan/default/src/ckan/ckan/templates/snippets/license.html   [jinja2]

 [Fri Jan 11 06:21:46.339502 2019] [wsgi:error] [pid 2178:tid   139975718889216] 2019-01-11 06:21:46,339 DEBUG [ckan.lib.base] rendering   /usr/lib/ckan/default/src/ckan/ckan/templates/package/snippets/  resources.html [jinja2]

 [Fri Jan 11 06:21:46.340241 2019] [wsgi:error] [pid 2178:tid   139975718889216] 2019-01-11 06:21:46,340 DEBUG [ckan.lib.base] rendering   /usr/lib/ckan/default/src/ckan/ckan/templates/snippets/social.html[jinja2]

 [Fri Jan 11 06:21:46.341363 2019] [wsgi:error] [pid 2178:tid   139975718889216] 2019-01-11 06:21:46,341 DEBUG [ckan.lib.base] rendering   usr/lib/ckan/default/src/ckan/ckan/templates/snippets/  language_selector.html [jinja2]

 [Fri Jan 11 06:21:46.345452 2019] [wsgi:error] [pid 2178:tid   139975718889216] 2019-01-11 06:21:46,345 INFO  [ckan.lib.base]    /dataset/vfvfvfv/resource/1db088cc-2805-4c20-887c-f2f2ed91630e render time 
 0.209 seconds

 [Fri Jan 11 06:21:46.438541 2019] [wsgi:error] [pid 2178:tid   139975710496512] 2019-01-11 06:21:46,438 DEBUG   [ckan.config.middleware.pylons_app] Pylons route match: {'url':   u'base/images/nav-active.png', 'action': u'view', 'controller':   u'template'} Origin: core

 [Fri Jan 11 06:21:46.438661 2019] [wsgi:error] [pid 2178:tid   139975710496512] 2019-01-11 06:21:46,438 DEBUG [ckan.config.middleware]   Route support answers for GET /base/images/nav-active.png: [(False,   'flask_app'), (True, 'pylons_app', 'core')]

 [Fri Jan 11 06:21:46.438755 2019] [wsgi:error] [pid 2178:tid   139975710496512] 2019-01-11 06:21:46,438 DEBUG [ckan.config.middleware]   Serving request via pylons_app app

 [Fri Jan 11 06:21:46.447920 2019] [wsgi:error] [pid 2179:tid   139975718889216] 2019-01-11 06:21:46,447 DEBUG   [ckan.config.middleware.pylons_app] Pylons route match: {'lang': u'en',   'action': u'i18n_js_translations', 'controller': u'api', 'ver': u'/1'}   Origin: core

 [Fri Jan 11 06:21:46.448081 2019] [wsgi:error] [pid 2179:tid   139975718889216] 2019-01-11 06:21:46,448 DEBUG [ckan.config.middleware]   Route support answers for GET /api/i18n/en: [(False, 'flask_app'), (True,   'pylons_app', 'core')]

 [Fri Jan 11 06:21:46.448141 2019] [wsgi:error] [pid 2179:tid   139975718889216] 2019-01-11 06:21:46,448 DEBUG [ckan.config.middleware]   Serving request via pylons_app app

 **[Fri Jan 11 06:21:46.450241 2019] [wsgi:error] [pid 2179:tid   139975718889216] 2019-01-11 06:21:46,450 DEBUG [ckan.logic] check access OK 
 - site_read user=

 [Fri Jan 11 06:21:46.453059 2019] [wsgi:error] [pid 2179:tid   139975718889216] 2019-01-11 06:21:46,453 INFO  [ckan.lib.base]    /api/i18n/en render time 0.003 seconds

[Fri Jan 11 06:21:46.503467 2019] [wsgi:error] [pid 2178:tid  139975718889216] 2019-01-11 06:21:46,503 DEBUG  [ckan.config.middleware.pylons_app] Pylons route match: {'action':  u'resource_view', 'view_id': u'a663fdda-ce6f-4ac2-b872-a646f488feff',  'controller': u'package', 'id': u'vfvfvfv', 'resource_id': u'1db088cc-2805-  4c20-887c-f2f2ed91630e'} Origin: core

[Fri Jan 11 06:21:46.503593 2019] [wsgi:error] [pid 2178:tid  139975718889216] 2019-01-11 06:21:46,503 DEBUG [ckan.config.middleware]  Route support answers for GET /dataset/vfvfvfv/resource/1db088cc-2805-4c20-  887c-f2f2ed91630e/view/a663fdda-ce6f-4ac2-b872-a646f488feff: [(False,  'flask_app'), (True, 'pylons_app', 'core')]

[Fri Jan 11 06:21:46.503652 2019] [wsgi:error] [pid 2178:tid  139975718889216] 2019-01-11 06:21:46,503 DEBUG [ckan.config.middleware]  Serving request via pylons_app app

**[Fri Jan 11 06:21:46.511546 2019] [wsgi:error] [pid 2178:tid  139975718889216] 2019-01-11 06:21:46,511 DEBUG [ckan.logic] check access  NotAuthorized - package_show user= "User  not authorized to read package  1c10b0c0-2a2b-46e1-abc5-ff61f6794f8c"

Более того, я думаю, что при просмотре частных наборов данных мой запрос переходит от Nginx к веб-серверу Apache для пользователя admin , который не вошел в систему и, следовательно, не может найти этот ресурс, который является частным, и поэтому отображает Ошибка 404 Не найдено выше.

Журналы, начинающиеся с **, являются причиной не отображения ресурса, тогда как в некоторых журналах в некоторых местах для check_access показывается user = admin . Только на этом этапе аутентификации нет пользователя (admin является пользователем sysadmin на ckan)


Default.conf в Nginx для CKAN

proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=cache_ckan:30m max_size=250m;
proxy_temp_path /tmp/nginx_proxy 1 2;

server {
        listen 443;
        server_name localhost;

        real_ip_header X-Forwarded-For;

        proxy_set_header   Host                $host;
        proxy_set_header   X-Real-IP           $remote_addr;
        proxy_set_header   X-Forwarded-Host    $host;
        proxy_set_header   X-Forwarded-For     $proxy_add_x_forwarded_for;

        add_header X-Frame-Options SAMEORIGIN;

        ssl on;
        ssl_certificate /etc/nginx/cert/nginx.crt;
        ssl_certificate_key /etc/nginx/cert/nginx.key;
        ssl_protocols TLSv1.1 TLSV1.2;
        ssl_ciphers HIGH:!aNULL:!MD5:!SHA1;
        ssl_prefer_server_ciphers on;

        client_max_body_size 100M;

        # maintenance
        error_page 503 @503_error;

        set $maintenance false;
        if (-f /etc/nginx/maintenance/maintenance.txt) {
            set $maintenance true;
        }

        if ($allow_ip_flag) {
            set $maintenance false;
        }

        location = /maintenance.html {
            if ($maintenance = false) {
                return 404;
            }
        }

        if ($maintenance = true) {
            return 503;
        }

        location @503_error {
            root /etc/nginx/maintenance/html;
            internal;
            expires 0;
            set $mainte_503 O;

            if ($request_method != GET) {
                set $mainte_503 T;
            }

            if ($maintenance = true) {
               set $mainte_503 "${mainte_503}R";
            }

            if ($mainte_503 = TR) {
               return 503;
            }

            if ($mainte_503 = OR) {
                rewrite ^(.*)$ /maintenance.html break;
            }

            if ($maintenance = false) {
                return 503;
            }
        }

    location /ckan/ {
                proxy_pass https://ckan-base-app-ip:5000;

                proxy_set_header X-Url-Scheme $scheme;
                proxy_set_header Host $host;

#               rewrite ^/ckan/ckan/(.*) /ckan/$1 permanent;

                if ($args ~* "(.*)&csrfpId=([^&]*)(.*)") {
                    set $args $1$3;
                }

                proxy_cache cache_ckan;
                proxy_cache_bypass $cookie_auth_tkt;
                proxy_no_cache $cookie_auth_tkt;
                proxy_cache_valid 10m;
                proxy_cache_key $host$scheme$proxy_host$request_uri;

                limit_rate 25M;
                #limit_req zone=ckan burst=100 nodelay;
        }



        location /css/ngsi_icons.css {
                proxy_pass https://ckan-base-app-ip:5000/css/ngsi_icons.css;

                proxy_set_header X-Url-Scheme $scheme;
                proxy_set_header Host $host;

                proxy_cache cache_ckan;
                proxy_cache_bypass $cookie_auth_tkt;
                proxy_no_cache $cookie_auth_tkt;
                proxy_cache_valid 10m;
                proxy_cache_key $host$scheme$proxy_host$request_uri;

               limit_rate 25M;
#                #limit_req zone=ckan burst=100 nodelay;

        }

        location /images/sprite-resource-icons2.png {
                proxy_pass https://ckan-base-app-ip:5000/ckan/images/sprite-resource-icons2.png;

                proxy_set_header X-Url-Scheme $scheme;
                proxy_set_header Host $host;

                proxy_cache cache_ckan;
                proxy_cache_bypass $cookie_auth_tkt;
                proxy_no_cache $cookie_auth_tkt;
                proxy_cache_valid 10m;
                proxy_cache_key $host$scheme$proxy_host$request_uri;

                limit_rate 25M;
                #limit_req zone=ckan burst=100 nodelay;

        }

      location /ckan/api/i18n/en/{
                if ($request_uri !~* datastore_create|datastore_search|resource_show|datapusher_hook){
                    return 403;
                }

                proxy_pass https://ckan-base-app-ip:5000/api/i18n/en;

                proxy_set_header X-Url-Scheme $scheme;
                proxy_set_header Host $host;

                proxy_cache cache_ckan;
                proxy_cache_bypass $cookie_auth_tkt;
                proxy_no_cache $cookie_auth_tkt;
                proxy_cache_valid 10m;
                proxy_cache_key $host$scheme$proxy_host$request_uri;

                limit_rate 25M;
               #limit_req zone=ckan burst=100 nodelay;
        }

}

Я не могу установить все заголовки, необходимые для того, чтобы моя настройка работала без сбоев, как в случае установки с Nginx. Я думаю, что проблема заключается в Nginx, а не в CKAN. Итак, какие заголовки я должен включить в Nginx, чтобы запустить его успешно .?

...