我很遗憾和我自己建立NGINX的新手,但我希望能够启用安全的websockets,而无需额外的层.
我不想在websocket服务器本身上启用SSL,而是想使用NGINX为整个事物添加SSL层.
每个网页都说我做不到,但我知道我可以做到!感谢任何人(我自己)可以告诉我如何!
使用mod_jk和mod_proxy使用apache前端tomcat实例的优点和缺点是什么?
我已经在生产中使用mod_jk多年了,但我听说它是面向tomcat的"旧方式".我应该考虑改变吗?会有什么好处吗?
我设法扩展TokenAuthentication并且在使用请求会话来存储我的令牌时有一个工作模型,但是当我尝试作为此处所述Authorization的头参数传递时,我注意到我的响应没有META变量HTTP_AUTHORIZATION.我还注意到,如果我将"Authorization2"作为标头参数传递,它在请求中可见:
{
'_content_type': '',
'accepted_media_type': 'application/json',
'_request': <WSGIRequest
path:/api/test_auth/,
GET:<QueryDict: {}>,
POST:<QueryDict: {}>,
COOKIES:{
'MOD_AUTH_CAS_S': 'ba90237b5b6a15017f8ca1d5ef0b95c1',
'csrftoken': 'VswgfoOGHQmbWpCXksGUycj94XlwBwMh',
'sessionid': 'de1f3a8eee48730dd34f6b4d41caa210'
},
META:{
'DOCUMENT_ROOT': '/etc/apache2/htdocs',
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTPS': '1',
'HTTP_ACCEPT': '*/*',
'HTTP_ACCEPT_CHARSET': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'HTTP_ACCEPT_ENCODING': 'gzip,deflate,sdch',
'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8',
'HTTP_AUTHORIZATION2': 'Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4c',
...
Run Code Online (Sandbox Code Playgroud)
我的第一个猜测是apache正在删除授权头,并且我已经阅读了一些S/O问题,这些问题表明,如果apache与基本授权不匹配并进行身份验证,则会丢弃该值,但我不知道如何允许Authorization标头"传递"到Django和WSGIRequest.有谁知道如何解决这个问题?
我也使用mod_auth_cas和mod_proxy,如果改变了什么..
apache authorization apache2 mod-proxy django-rest-framework
我们在Tomcat 6和Apache mod_proxy 2.2.3上运行Web应用程序.看到很多像这样的502错误:
错误的网关!代理服务器从上游服务器收到无效响应.
代理服务器无法处理请求GET /the/page.do.
原因:从远程服务器读取时出错
如果您认为这是服务器错误,请与网站管理员联系.
错误502
Tomcat有很多线程,因此它不受线程限制.我们正在通过JMeter推动2400名用户对抗该应用.所有的盒子都位于我们的防火墙内快速卸载的网络上,所以不应该有任何网络问题.
任何人有什么建议可以看待或尝试?接下来我们将前往tcpdump.
更新10/21/08:仍然没有想到这一点.只看到极少数这些负载.下面的答案还没有提供任何神奇的答案.:)
我有一台运行Apache的Linux主机和一台运行IIS的Windows主机.我有一个指向Linux主机的域,需要将其中继(代理)请求发送到IIS; 因此我在Apache中有以下虚拟主机定义(工作正常):
<VirtualHost 192.168.0.2:80>
ServerName www.acme.com
DocumentRoot /var/www/acme.com
RewriteEngine On
RewriteOptions Inherit
RewriteRule ^/(.*) http://win.acme.com/$1 [P]
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
现在我想添加SSL支持; 定义变为:
<VirtualHost 192.168.0.2:443>
ServerName www.acme.com
DocumentRoot /var/www/acme.com
GnuTLSEnable On
GnuTLSPriorities NORMAL:%COMPAT
GnuTLSCertificateFile /var/www/ssl/www.acme.com.crt
GnuTLSKeyFile /var/www/ssl/www.acme.com.key
RewriteEngine On
RewriteOptions Inherit
RewriteRule ^/(.*) https://win.acme.com/$1 [P]
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我在两个Web服务器上都有有效且可信的证书,如果我访问https://win.acme.com一切都很好,但是,当我访问时,https://www.acme.com我收到500内部服务器错误消息.查看错误日志显示:
[Wed Jul 20 08:35:34 2011] [错误] [客户端76.168.166.70] SSL代理请求www.wileybits.com:80但未启用[提示:SSLProxyEngine] [Wed Jul 20 08:35:34 2011] [error] proxy:HTTPS:无法为74.166.186.70:443启用ssl支持(win.acme.com)
请注意代理请求似乎是针对错误的域(wileybits)...它显示的域也由我的Apache服务器托管,但我不知道为什么它出现在acme.com的日志中(反向也许是DNS查找?)
无论如何,我错过了什么?
提前谢谢 - ekkis
ps主机名和地址已被修改,以保护无辜:)
*更新*
有:
RewriteRule ^/(.*) https://win.acme.com/$1 [R,L]
Run Code Online (Sandbox Code Playgroud)
它似乎工作正常,但当然,Windows的主机名变得可见,这在我的场景中是不可接受的
我也试过(而不是mod_rewrite):
ProxyRequests Off
ProxyPass / …Run Code Online (Sandbox Code Playgroud) 我需要设置一个带身份验证的代理来验证连接到Internet的应用程序的行为.
我正在尝试使用转发代理和身份验证来设置Apache安装,即使我接近使其工作,我想知道是否有更好的方法,因为配置相当深奥.
Apache如何配置为以这种方式工作?
还有其他已经配置好的选项吗?也许是一些VM或其他一些软件工具,而不是Apache?
简介: Apache 2.4的mod_proxy似乎没有将Authorization标头传递给PHP-FPM.有没有什么办法解决这一问题?
长版: 我正在使用Apache 2.4和PHP-FPM运行服务器.我正在使用APC进行操作码缓存和用户缓存.根据Internet的建议,我使用Apache 2.4的mod_proxy_fcgi来代理对FPM的请求,如下所示:
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/foo/bar/$1
Run Code Online (Sandbox Code Playgroud)
安装工作正常,除了一件事:APC捆绑的apc.php,用于监控APC的状态不允许我登录(查看用户缓存条目所需).当我单击"用户缓存条目"以查看用户缓存时,它会要求我登录,单击登录按钮会显示通常的HTTP登录表单,但输入正确的登录名和密码不会成功.当使用mod_php而不是mod_proxy + php-fpm运行时,此函数运行正常.
经过一些谷歌搜索,我发现其他人有同样的问题,并发现这是因为Apache没有将授权HTTP标头传递给外部FastCgi进程.不幸的是我只找到了mod_fastcgi的修复程序,它看起来像这样:
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -pass-header Authorization
Run Code Online (Sandbox Code Playgroud)
有没有相同的设置或一些解决方法,也适用于mod_proxy_fcgi?
问题:我需要在不同域上的同一台服务器上托管节点应用程序和php应用程序.
example.com应该正常使用端口80,但node-example.com应该路由到端口3000.
路由从端口80到3000的所有流量使用mod_proxy正常工作,因此:
<VirtualHost *:80>
ServerAdmin info@node-example.com
ServerName node-example.com
ServerAlias www.node-example.com
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
</Location>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
但是,这会使example.com和node-example.com指向localhost:3000并运行Node-app.
有没有办法让example.com指向端口80?
example.com/old-admin指向端口80也没关系.
我在Servlet容器(端口8080)上运行WebApplication,该环境可以从Internet(外部)和公司内部(内部)访问,例如
http://external.foo.bar/MyApplication
http://internal.foo.bar/MyApplication
Run Code Online (Sandbox Code Playgroud)
使用带有mod_proxy的apache http服务器将incomming(外部/内部)请求重定向到servlet容器.配置如下所示:
ProxyPass /MyApplication http://localhost:8080/MyApplication retry=1 acquire=3000 timeout=600 Keepalive=On
ProxyPassReverse /MyApplication http://localhost:8080/MyApplication
Run Code Online (Sandbox Code Playgroud)
我现在面临的问题是某些MyApplication响应依赖于原始请求URL.具体:将为WSDL文档提供具有元素的schemaLocation="<RequestUrl>?xsd=MyApplication.xsd"元素.
使用我当前的配置,它总是看起来像
<xs:import namespace="..." schemaLocation="http://localhost:8080/MyApplication?xsd=MyApplication.xsd"/>
Run Code Online (Sandbox Code Playgroud)
但它应该是
External Request: <xs:import namespace="..." schemaLocation="http://external.foo.bar/MyApplication?xsd=MyApplication.xsd"/>
Internal Request: <xs:import namespace="..." schemaLocation="http://internal.foo.bar/MyApplication?xsd=MyApplication.xsd"/>
Run Code Online (Sandbox Code Playgroud)
我想这是一个常见的要求.但由于我不是apache http服务器及其模块配置的专家,如果有人可以提供一些(详细的)帮助,我会很高兴.
提前致谢!
我正在使用Tomcat 7.0.29前面的Apache 2.2.22 modproxy.配置Ajp作为httpd.conf中的协议和server.xml中的AjpNioProtocol.服务器启动后,日志将填充以下消息:
严重:收到签名
20599 com.apache.coyote.ajp.AjpMessage processHeader的消息无效
没有请求发送到Web或tomcat服务器,它仍然会抛出该错误.tomcat和apache中的访问日志显示没有请求进入.导致无效消息错误的原因是什么?
这是配置:
httpd.conf文件
ProxyPass /wl ajp:// ip : port /wl
ProxyPassReverse /wl ajp:// ip : port /wl
Run Code Online (Sandbox Code Playgroud)server.xml中
<Connector port="port"
protocol="org.apache.coyote.ajp.AjpNioProtocol"
connectionTimeout="20000"
acceptorThreadCount="2"
maxThreads="1600"
redirectPort="8443" />
Run Code Online (Sandbox Code Playgroud)