Portál AbcLinuxu, 29. října 2025 00:19
Poslední dobou bojuji, jak správně nastavit NGINX, aby bez problému dělal ProxyPass i pro Microsoft technologie. Přijde mi, že „NGINX Open Source“ si nerozumí záměrně z Microsoft technologie. A chtějí, abyste přešel na placenou verzi, která třeba má i podporu NTLM, kterou Microsoft rád využívá.
Jelikož, bych chtěl používat NGINX jako ProxyPass pro Microsoft produkty jako je Exchange, SharePoint atd.., ale zde vždy narazím na to – buď mi neprojde autorizace na daný server a pokud ano, tak se mi zobrazí maximálně bílá stránka.
Neřešil jste někdo obdobný problém?
Stejné úkoly je možné bez problému rozeběhnout na APACHI, ale to mám jako krajní možnost. Raději bych zůstal u NGINXU.
Konfigurace daného ProxyPassu jeden z málo pokusů.
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
client_max_body_size 10G;
proxy_buffering off;
proxy_http_version 1.1;
proxy_request_buffering off;
proxy_set_header Connection "Keep-Alive";
proxy_set_header Destination $fixed_destination;
proxy_pass http://xxxxx:80;
}
Přijde mi, že „NGINX Open Source“ si nerozumí záměrně … A chtějí, abyste přešel na placenou verzi,
Stejný dojem mám z Nginxu i já a je mi to dost nesympatické. Nejde mi až tak o peníze, ale o to, že chci používat čistě svobodný software. Takže od jisté chvíli migruji vše zpět na Apache.
Stejné úkoly je možné bez problému rozeběhnout na APACHI, ale to mám jako krajní možnost. Raději bych zůstal u NGINXU.
Proč?
apt install nginx-extras
nginx-extras/oldstable,oldstable 1.10.3-1+deb9u3 amd64 nginx web/proxy server (extended version)Petr
Vyzkoušel jsem balík mod_proxy_msrpc pro Apache v konfiguraci:
VirtualHost *:443
ServerName mail.domain.com
SSLEngine on
SSLCertificateFile /etc/httpd/certs/2018-wildcard-domain-com.crt
SSLCertificateKeyFile /etc/httpd/certs/2018-wildcard-domain-com.key
SSLCertificateChainFile /etc/httpd/certs/GeoTrustRSACA2018.pem
SSLProxyEngine on
ProxyPreserveHost On
Header always set X-Frame-Options SAMEORIGIN
Header set Server Apache
Header unset X-AspNet-Version
Header unset X-OWA-Version
Header unset X-Powered-By
RequestHeader unset Expect early
SetEnvIf User-Agent ".*MSIE.*" value BrowserMSIE
Header unset WWW-Authenticate
Header add WWW-Authenticate "Basic realm=mail.domain.com"
## ProxyRequests Off
ProxyRequests On
ProxyPreserveHost On
ProxyReceiveBufferSize 4096
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
OutlookAnywherePassthrough On
# Outlook Web Access(OWA)
ProxyPass /owa https://192.168.1.10/owa
ProxyPassReverse /owa https://192.168.1.10/owa
# Outlook Anywhere / RPC over http(s)
ProxyPass /rpc https://192.168.1.10/rpc
ProxyPassReverse /rpc https://192.168.1.10/rpc
ProxyPass /ews https://192.168.1.10/ews
ProxyPassReverse /ews https://192.168.1.10/ews
ProxyPass /autodiscover https://192.168.1.10/autodiscover
ProxyPassReverse /autodiscover https://192.168.1.10/autodiscover
# Microsoft ActiveSync
ProxyPass /Microsoft-Server-ActiveSync https://192.168.1.10/Microsoft-Server-ActiveSync connectiontimeout=600
ProxyPassReverse /Microsoft-Server-ActiveSync https://192.168.1.10/Microsoft-Server-ActiveSync
Directory /Microsoft-Server-ActiveSync
SSLRenegBufferSize 31457280
/Directory
/VirtualHost
Problémy: NTLM autorizace :(, po zadaní heslo se exchange bez problému rozeběhl, ale vyžaduje prvotně zadat exchange, nějakým způsobem to běží, ale v logu se objevuje plno chyb 401 - mobilní telefony jsou OK
Vyzkoušel jsem balík headers-more-nginx-module pro nginx v konfiguraci:
server {
listen 443 ssl http2;
server_name mail.domain.com;
# Certificate(s) and private key
ssl_certificate /etc/nginx/certs/2018-wildcard-domain-com.crt;
ssl_certificate_key /etc/nginx/certs/2018-wildcard-domain-com.key;
ssl_trusted_certificate /etc/nginx/certs/GeoTrustRSACA2018.pem;
include /etc/nginx/options-ssl-nginx.conf;
proxy_connect_timeout 360;
proxy_read_timeout 360;
proxy_http_version 1.1;
proxy_pass_request_headers on;
proxy_pass_header Date;
proxy_pass_header Server;
proxy_pass_header Authorization;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Accept-Encoding "";
more_set_input_headers 'Authorization: $http_authorization';
proxy_set_header Accept-Encoding "";
more_set_headers -s 401 'WWW-Authenticate: Basic realm="$host"';
#more_set_headers -s 401 'WWW-Authenticate: Basic realm=mail.domain.com';
location = / {
return 301 "/owa/";
}
location = /favicon.ico {
empty_gif;
access_log off;
}
location /rpc { grpc_pass grpc://192.168.1.10; }
location / { proxy_pass https://192.168.1.10; }
error_log /var/log/nginx/haproxy-error.log debug;
access_log /var/log/nginx/haproxy-access.log;
}
Problémy: NTLM autorizace :(, jaká koliv snaha skončí 401 chybou vždy na služby RPC :(, která komunikuje z Outlookem - mobilní telefony jsou OK
HAPROXY jsem ještě nezkoušel jelikož netuším jak to pořádně nakonfigurovat :(
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.