Porównaj ceny domen i usług IT, sprzedawców z całego świata

Nginx nadpisuje argumenty zawierające spacje


Powinno być łatwe, jednak starałem się uzyskać poprawną składnię wyrażenia regularnego, aby przepisywanie działało w określonej lokalizacji. Krótko mówiąc, muszę znaleźć określony ciąg zapytania ze spacjami, a następnie przekazać te same argumenty do serwera WWW zaplecza. Czego tu brakuje?
To jest miejsce:
    location =/SubDirectory/ {
if ($args !~* "Report Files"){ #Contains Spaces
set $report "LongString_guest.jsp?reportName=Report with several spaces&reportPath=/Share/Reports/REPORT&appSwitcherDisabled=true";
rewrite ^(.*)$ $report break;
}
proxy_pass [url=https://srvweb;]https://srvweb;[/url] #upstream loadbalanced servers

Mamy stronę SAS 9.4 VisualAnalyticsViewer na innym hoście, którą chciałbym publicznie zaprezentować pod adresem 443. Serwer zaplecza SAS działa na serwerze Apache Tomcat i nasłuchuje tylko na 8343. Wolałbym nie zmieniać każdej instrukcji proxy_pass w polu SAS, lub skonfiguruj jego porty tak, aby jedna strona była dostępna na porcie 443, jeśli to możliwe. Obecnie nasze serwery internetowe mają łącza za pomocą ramek iFrame do 8343 wewnętrznych serwerów, które działają, ale ograniczają dostęp użytkowników do publicznych ze względu na ograniczenia zdalnej zapory. Chciałbym umieścić Nginx przed serwerem Tomcat, aby nasłuchiwał 443. Mój problem dotyczy obsługi spacji w instrukcji rewrite. Czy ktoś może pokazać mi poprawną składnię lub wyrażenie regularne, jak to osiągnąć?
Proszę zanotować; Omijanie Nginx i wklejanie pełnego wewnętrznego adresu URL ze spacjami do lokalnej przeglądarki działa.
Scenariusz aplikacji:
External Client Request:[url=https://apppub.domain.com/appVisualAnalyticsViewer]https://apppub.domain.com/appVisualAnalyticsViewer[/url] Or,[url=https://apppub.domain.com/appVisualAnalyticsViewer/VisualAnalyticsViewer_guest.jsp?reportName=Report]https://apppub.domain.com/appV ... eport[/url] with Spaces&reportPath=/Some Data Path with Spaces/SubFolder/REPORT&appSwitcherDisabled=true

Serwer proxy Nginx sprawdza poprawność ciągu zapytania URI, a następnie przepisuje lub dodaje go do wewnętrznego serwera SAS na porcie 8343.
Nginx Reverse Proxy:[url=https://appint.domain.com:8343/appVisualAnalyticsViewer/VisualAnalyticsViewer_guest.jsp?reportName=Report]https://appint.domain.com:8343 ... eport[/url] with Spaces&reportPath=/Some Data Path with Spaces/REPORT&appSwitcherDisabled=true

Odpowiedź klienta:
https://apppub.domain.com/appV ... ewer/
https://apppub.domain.com/appV ... ewer/
(Usunięcie ciągu zapytania z adresu URL przeglądarki klienta zdalnego)
Poniżej znajdują się pełne konfiguracje dla apppub.conf (tylko na tej stronie), response.conf i proxy.conf używane przez wiele witryn na tym samym proxy.
Nginx Config:        upstream appint { 
least_conn;
server appint.domain.com:8343;
}server { listen 80;
server_name apppub.domain.com; access_log off;
autoindex off; location/{
# Rate limit first 6 requests and burst next 4. Reject everything else
limit_req zone=one burst=10 delay=6;
return 301 https://$server_name$request_uri;
}}server { listen 443 ssl; server_name apppub.domain.com; # Site Specific Logging Metrics
access_log/var/log/nginx/apppub.access.log main_ext;
error_log/var/log/nginx/apppub.error.log warn; autoindex off; # Load SSL cert and session security
include/etc/nginx/conf.add/domain-ssl.conf; # Add Security and Caching Headers to responses
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header Cache-Control no-cache;
add_header Vary Accept-Encoding;
expires 5m; # Load client buffers and timeout response
include/etc/nginx/conf.add/response.conf; (See Below) # Load Gzip mime type compression
include/etc/nginx/conf.add/gzip.conf;
#/appVisualAnalyticsViewer/ location ~ ^/appVisualAnalyticsViewer { if ($args !~* "Report Name with Spaces"){
set $report "VisualAnalyticsViewer_guest.jsp?reportName=Report with Spaces&reportPath=/Some Data Path with Spaces/REPORT&appSwitcherDisabled=true";
rewrite ^(.*)$ $report break;
**(What's the correct syntax for a rewrite?)**
} include/etc/nginx/conf.add/proxy.conf; (See Below)
proxy_pass [url=https://appint;]https://appint;[/url] }

Response Config:
Form POST submissionsclient_body_buffer_size 1024K;
Form POST maxiumum sizeclient_max_body_size 16m;
Max client header sizeclient_header_buffer_size 2k;
Max time to receive client headers/body from bufferclient_body_timeout 5s; client_header_timeout 5s;
Max time to keep a connection open to clientskeepalive_timeout 5s;
Max time for the client accept/receive a responsesend_timeout 5s;
Skip buffering for static filessendfile on;
Optimize sendfile packetstcp_nopush on; }

   Proxy Config:        Proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header
X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header Connection ""; # Enable keepalives proxy_set_header
Accept-
Encoding ""; # Optimize encoding proxy_set_header X-Forwarded-Host
$host:$server_port; proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_buffers 32 4m; proxy_busy_buffers_size 25m; proxy_buffer_size 512k;
proxy_headers_hash_max_size 512; proxy_headers_hash_bucket_size 128;
proxy_ignore_headers "Cache-Control" "Expires"; proxy_max_temp_file_size 0; proxy_next_upstream error timeout invalid_header http_500;
proxy_connect_timeout 90; proxy_read_timeout 90; proxy_send_timeout 90;
proxy_intercept_errors off;

Zaproszony:

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się