我在一个Karaf托pipe的应用程序(Apache和Karaf在不同的服务器上)前部署Apache。 我希望Apache可以作为反向代理运行,也可以隐藏部分URL。 直接从应用程序服务器获取应用程序login页面的URL是http://app-server:8181/jellyfish 。 页面由在Karaf内运行的Jetty实例提供服务。 当然,除了反向代理服务器以外,这种行为通常会被防火墙阻止。 在防火墙closures的情况下,如果您点击此URL,Jetty将加载login页面。 浏览器的地址栏正确地更改为http://app-server:8181/jellyfish/login?0 ,一切正常。 我想要的是http://web-server (即从根目录)映射到应用程序服务器上的Jetty与应用程序( jellyfish )的名称压制。 例如,浏览器将更改为在地址栏中显示http://web-server/login?0 ,所有后续的URL和内容将与Web服务器的域一起提供,并且不会出现jellyfish混乱。 我可以使用下面的configuration(snippet)让Apache作为一个简单的反向代理来运行: ProxyPass /jellyfish http://app-server:8181/jellyfish ProxyPassReverse / http://app-server:8181/ …但这需要浏览器的URL包含jellyfish和去根URL( http://web-server )给出了404 Not Found。 我花了很多时间试图使用mod_rewrite和没有[P]标志来解决这个问题,但没有成功。 然后我尝试了ProxyPassMatch指令,但我似乎无法得到相当正确的。 这是当前的configuration,正如加载到Web服务器上的/etc/apache2/sites-available/ 。 请注意,有一个本地托pipe的图像目录。 我也保留了mod_rewrite代理漏洞保护,并且压制了一些伪造的错误mod_security规则。 <VirtualHost *:80> ServerAdmin admin@drummer-server ServerName drummer-server ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined Alias /images/ "/var/www/images/" RewriteEngine On RewriteCond %{REQUEST_URI} !^$ RewriteCond […]
我有以下设置: 局域网上的打印机#1 打印机#2在LAN上 互联网面临的server-external-ip Debian的Apache 2.2 Web服务器,我想用作IPP网关的两台打印机 这两台打印机可以通过以下IPP URL访问(从LAN和Apache服务器): http://printer-1-local-ip/printer http://printer-2-local-ip/printer (打印机没有物理连接到Web服务器。) 我希望它们可以通过以下URL从Internet访问: http://server-external-ip/prn1 http://server-external-ip/prn2 IPP专门通过对打印机地址的HTTP请求来工作(即,整个打印过程通过POST请求在http:// printer-X-local-ip /打印机 URL处发生),所以我只需要redirect(即反向代理与Apache)上面的URL 1和2。 Apache正在服务其他内容,所以我不能用自定义程序(例如netcat或netsed)来replace它。 另外,由于打印机客户端只能够在端口80处到达服务器,因此我无法在其他端口上运行自定义程序。 然后我尝试了下面的Apacheconfiguration: RewriteRule ^/prn1$ http://printer-1-local-ip:80/printer [P] ProxyPassReverse /prn1 http://printer-1-local-ip 将Windows客户端连接到http:// server-external-ip / prn1 URL,反向代理就可以工作。 但是IPP协议还会向打印机(在POST-ed数据中)发送完整的设备URL。 这意味着打印机会收到http:// server-external-ip / prn1打印机的显式IPP请求,而不是其正确的地址( http:// printer-1-local-ip / printer )。 所以它拒绝连接。 我将这个条目添加到Windows客户端的HOST文件中: server-external-ip printer-dns-name 但它仍然不起作用,因为打印机收到仍然具有错误服务名称的http:// printer-dns-name / prn1的IPP请求(即, prn1而不是打印机 )。 […]
我现在正在尝试将nginx设置为Hudson的反向代理,以便可以访问 http://build.example.com 直。 我已经在Tomcat上安装了Hudson,并validation了我可以访问Hudson http://127.0.0.1:8080/hudson 在http://build.example.com/hudson上访问hudson是非常简单的。 但是,当我试图设置代理重新映射/ hudson目录,事情开始出错。 没有正在加载的CSS或图像文件。 快速查看nginx访问日志告诉我,正在对/ hudson或/ hudson / static资源进行大量请求。 这些请求没有正确转发(或重写)到Tomcat。 但是经过几个小时的挖掘,我对如何解决这个简单的问题感到迷茫。 我正在使用的nginx设置看起来像 server { listen 80; server_name build.example.com; location / { proxy_pass http://127.0.0.1:8080/hudson; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 有人可以解释一下吗? 安装起来非常简单,但我似乎无法在networking上的任何地方find解决scheme。 更新 对所有花时间回答这个问题的人表示衷心的感谢。 在尝试了各种解决scheme之后,我认为处理这个特定问题最直接的方法是要么… A)保持独立如@VonCbuild议,让它留在一个子目录。 这是直截了当的,我们可以肯定,没有什么会打破。 要么… B)将应用程序部署到tomcat webapp目录的根目录如果你想用tomcat安装多个webapps,这可能不是最好的做法。 但是pipe理员可能想要设置一个单独的tomcat安装,只是为了运行Hudson / Jenkins。 Tomcat不能像不同的用户一样运行不同的托pipe应用程序,任何为CI设置Hudson / Jenkins的人都可能希望以特定的用户身份运行它(例如“构build”)。 […]
我需要在Nginx中创build一个非常简单的映射,将子pathredirect到位于同一子网中的另一台服务器。 Nginx服务器:192.168.0.2 Tomcat服务器:192.168.0.3:8443 我试图把这个在服务器部分 location /tomcatapi/ { rewrite /tomcatapi/(.*) $1 break; proxy_pass http://192.168.0.3:8443; } 但所有我访问http://www.myservice.com/tomcatapi/是一个500错误页面和nginx日志文件我有这个错误: the rewritten URI has a zero length 我在这个configuration文件中缺less什么?
我想在Apache 2.4.16上使用HTTP2(可能需要升级到2.4.17),并偶然发现了官方Apache页面上的这个评论。 警告 这个模块是实验性的。 与其他标准模块相比,其行为,指令和默认值从发布到发布的变化都有所不同。 鼓励用户咨询“CHANGES”文件以获取潜在更新。 另一方面,许多其他人正在做如何启用它的教程。 那么使用它是安全的还是应该等待? 另外,我们可以将HTTP2与反向代理结合使用吗?
性能方面,将请求从Apache VirtualHostredirect到Node.js实例是否有意义? 代理是否抵消了令人敬畏的Node.js性能? 仅供参考:我还需要在同一台机器上parsing和运行几个PHP Web应用程序,这就是我甚至考虑使用反向代理的唯一原因。 根据我的研究,Nginx具有较less的开销,因此performance略好,但不幸的是不支持HTTP / 1.1。 我也想过让Node.js充当反向代理,并向Apache发送某些请求(例如,然后处理PHP文件),但是我听说可能有很多安全问题。
我有一个Apache Web服务器,需要反向代理网站。 因此example.com/test/或example.com/test从同一个其他web服务器拉。 我已经build立了一个没有像这样的结尾斜杠的反向代理: ProxyPass /test http://othersite.com/test ProxyPassReverse /testhttp://othersite.com/test 但它不适用于斜线。 有任何想法吗? 我已经尝试redirect从/testing/到/testing没有运气。 谢谢。
对于PCI合规性,我的应用程序被迫使用反向代理服务器和后端应用程序服务器之间的安全/encryption连接,而进入反向代理的连接在端口80上,即反向代理需要充当http-to -https转换器。 一个简单的图表: IIS7 <—端口443 — nginx <—-端口80 —- Internet 我正在评估使用nginx鱿鱼为这,这是我在我的nginx.conf到目前为止: worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream backend { server mybackendserver:443; } server { server_name www.mysite.com listen 80; ssl on; ssl_certificate /etc/nginx/server.crt; ssl_certificate_key /etc/nginx/server.key; ssl_verify_client off; location = / { proxy_pass https://backend; proxy_set_header […]
我试图find一个高级configuration的例子,为我目前的情况。 我们为多个内部IIS服务器上的多个子域拥有通配符SSL证书。 site1.example.com (XXX194) -> IISServer01:8081 site2.example.com (XXX194) -> IISServer01:8082 site3.example.com (XXX194) -> IISServer02:8083 我期待通过一个服务器条目来处理传入的SSLstream量,然后将特定的域传递给内部IIS应用程序。 看来我有两个select: 编码每个子域的位置部分(从我发现的例子看起来很乱) 将未encryption的stream量转发回为每个子域名主机名configuration不同服务器条目的nginx服务器。 (至less这似乎是一个选项)。 我的最终目标是巩固我们的大部分SSLstream量以通过nginx,所以我们可以使用HAProxy来负载均衡服务器。 如果我正确设置了proxy_set_header条目,是否会在nginx中使用#2方法? 我在我的最终configuration文件(使用方法#2)中设想了一些东西: server { listen YYY174:443; #Internally routed IP address server_name *.example.com; proxy_pass http://YYY174:8081; } server { listen YYY174:8081; server_name site1.example.com; — NORMAL CONFIG ENTRIES — proxy_pass http://IISServer01:8081; } server { listen YYY174:8081; server_name site2.example.com; […]
我有一个设置与Apache2作为前端服务器的多个python应用程序gunicorn服务 。 我使用mod_proxy的Apache2设置如下所示: <VirtualHost *:80> ServerName example.com UseCanonicalName On ServerAdmin webmaster@localhost LogLevel warn CustomLog /var/log/apache2/example.com/access.log combined ErrorLog /var/log/apache2/example.com/error.log ServerSignature On Alias /media/ /home/example/example.com/pysrc/project/media/ ProxyPass /media/ ! ProxyPass / http://127.0.0.1:4711/ ProxyPassReverse / http://127.0.0.1:4711/ ProxyPreserveHost On ProxyErrorOverride Off </VirtualHost> 一般来说,这个设置工作得很好。 我有一个问题,但是:当我重新启动gunicorn进程(需要2-5秒),并有一个来自Apache的请求,该请求将失败,503错误。 到现在为止还挺好。 但是,即使在gunicorn进程恢复之后,Apache仍然会返回503个错误。 只有在完全重新启动Apache之后,它才从代理服务器恢复提供内容。 有没有办法解决这个问题?