当请求到达代理/服务器时,根据请求者的IP,请求将被路由到特定的后端。 代理需要从中央键值存储获取目标后端IP,这是系统的一个要求。 我已经testing了nginx,但是proxy_pass需要是静态的,并且找不到实现这个目标的方法。 谢谢。
我有两个应用程序在两个Glassfish实例中运行,我configuration我的Apache使用sticky session如下所示: ProxyPass / balancer://Appcluster/ stickysession=JSESSIONID 但是这并不是100%正确的,当客户端从App1转到App2时,它会改变一些实例。 我检查我的导航器中的cookies显示我这样的事情: 我在web.xml发现了另一个configuration,如下所示: <session-config> <session-timeout> 30 </session-timeout> <cookie-config> <path>/</path> </cookie-config> </session-config> 所以当我这样做这样的path,每件事情都很好,但它创造了一个新的上下文之间的每个导航这两个应用程序之间。 现在我configuration我的GlassFish并设置App1像一个默认的Web模块 ,这工作正常,上下文是一样的,服务器创build一个新的cookie像这样: 但是,当我尝试连接没有默认的Web模块 ,它使用两个实例。 你能否提出Apache和Glassfish的正确configuration以在集群环境中运行多个应用程序? 编辑 我通知了一些事情,所以当客户端从App1到App2和VS,每次创build一个新的cookie如下: +——-+—————————————-+ | APP | Cookie | +——-+—————————————-+—–+ | app1 | b5a1cd4befdc306f6e569d835b5e.instance2 | New | +——-+—————————————-+—–+ | app2 | b6caf890638a506216d625f7c82b.instance2 | New | +——-+—————————————-+—–+ | app1 | b6d1870ad8f3d044cc768b31e810.instance2 | New | […]
我们使用Apache HTTPD服务器版本2.2。 我尝试使用Apache 2.2的mod_alias RedirectMatch没有成功( http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirectmatch ) 例如,我需要创build一个只redirectURL参数change_url=1的规则 https://<IP>/servlet1?id=1&type=2&change_url=1 我曾尝试使用以下规则: RedirectMatch (.*)change_url=1(.*) /keepurlprocess/$1 不幸的是,只有当URL中的change_url , https://<IP>/change_url=1 我的正则expression式有什么问题? 如何应用它来查询参数? 另外,我有一些特定的参数type 。 对于某些types,我不需要执行redirect: https://<IP>/servlet1?id=1&type=do_not_redirect&change_url=1 是否有可能创build像下面的规则? RedirectMatch (.*)(change_url=1 AND NOT type=do_not_redirect)(.*) /keepurlprocess/$1
我正在尝试为Centos 7上的网站configurationAwstats。 目前一切工作正常(我可以看到统计数据,关键字,页面点击等),但是Awstats上有一个部分读取“HTTP状态代码”,在这个标题下有一些代码,如404,301等。 我可以点击链接,我可以打开每个状态码的页面,但是对于所有的HTTP代码,这个列表是空的。 当我打开我的网站的日志,我可以看到404被logging在那里。 为什么他们不在Awstats上显示? 什么可能是错的? 我感谢任何帮助。 谢谢,莱昂纳多
我需要升级我的Redmine安装。 我在Mac OS X服务器10.6.8(不幸的是,这是一个给定的 – 不能现在更新系统到一个新的版本)。 在这个过程中,我遇到了安装Ruby新版本的问题(新的Redmine版本是必需的),最后是rbenv,现在它在系统上保留了所有的Ruby。 在更新乘客方面遇到了一些麻烦,直到我发现很久以前他们已经放弃了对10.6.8的支持。 我最终能够安装Passenger(及其Apache2模块),尽pipe我在升级之前运行的是同一版本 – 所以现在是Passenger 4.0.5。 但它正在运行,我也能够通过Passenger standalone确认我的应用程序(Redmine)仍然以更新的forms存在。 不过,我想通过Apache来服务Redmine,而我所得到的只是一个403错误,Apache日志中提到了以下内容: [Mon Feb 06 18:00:13 2017] [error] [client XXX.XX.XX.XXX] Directory index forbidden by Options directive: /Library/WebServer/Documents/redmine/ 这里是我的虚拟主机的conf文件的内容(somedomain隐藏我的主机名): <VirtualHost *:80> ServerName somedomain/redmine # !!! Be sure to point DocumentRoot to 'public'! DocumentRoot /Library/WebServer/Documents/redmine/public <Directory /Library/WebServer/Documents/redmine/public> # This relaxes Apache security settings. AllowOverride […]
我有两种configuration(开发和分段) – 具有(假定)相同的configuration:一组仅包含HTTP的Apache实例,位于Citrix负载均衡器之后,允许HTTP和HTTPS连接。 Apache VirtualHost定义包含以下指令: RedirectMatch permanent /something/endpoint(.*)$ /something/otherendpoint$1 SSLProxyEngine On ProxyPass /something/endpoint ! ProxyPass /something https://192.168.1.100:6443/something <Location /something> ProxyPassReverse https://192.168.1.100:6443/something </Location> 所以,我想代理任何请求/something到不同的后端HTTPS服务器,除了/something/endpoint ,我需要redirect。 现在,在我的开发环境中一切正常。 我可以访问http://hostname/something/endpoint ,它会将我redirect到http://hostname/something/otherendpoint 。 同样,我可以访问https://hostname/something/endpoint ,它会将我redirect到https://hostname/something/otherendpoint 。 但是在暂存环境中, http://hostname/something/endpoint和https://hostname/something/endpointredirect到http://hostname/something/otherendpoint – 它不保留HTTPS。 我一直在拉我的头发,试图找出两种configuration之间的区别。 必须有东西导致Apache不尊重访问协议,但我无法隔离它。 在两种环境中,HTTP响应标头都是相同的,除了指定http而不是https的redirectLocation标头。 任何关于什么configuration差异可能会导致这种想法?
所以我们有一个运行在Linux中的Apache服务器,没有问题。 昨天我们重新启动了一个服务器,从那以后我们注意到apache进程打开文件的数量一直在增加,直到服务器在几个小时后没有收到填充错误日志的错误的请求: (24)Too many open files: file permissions deny server access: /var/www/html/*X* (24)Too many open files: /var/www/html/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable 我们检查打开的文件,我们注意到它真的达到了极限(设置为4096)。 我们可以增加限制,但这只会增加正常运行时间,并不能解决问题,因为这种行为是不正常的。 没有额外的负载。 并检查打开的文件,我们注意到,exception增加的打开文件是unix套接字,即lsof -p PID充满: httpd 19848 apache 13u unix 0xffff880238a63380 0t0 204055 socket httpd 19848 apache 14u unix 0xffff8800aa3123c0 0t0 204183 socket httpd 19848 apache 15u […]
$_SERVER['HTTP_HOST']variables将在本地和部署的环境中返回正确的主机名。 但是在客户端环境中,这个variables正在提取一些不同的主机名。 我非常确定这不是一个PHP的问题。 但是,任何人都可以给我一些指针,我缺less处理这种情况下,http主机是不同于实际的url? 有没有问题的Apacheconfiguration? 注意:我没有访问该特定的服务器。
我正在使用MySQL在Tomcat中添加会话持久性,但不幸的是,它不工作。 数据库中没有什么 我试图保存会话信息,以便用户即使在tomcat重新启动后也能login。 这是我有的configuration: 表格: create database tomcat; create table tomcat$sessions ( id varchar(100) not null primary key, valid char(1) not null, maxinactive int not null, lastaccess bigint, data mediumblob ); context.xml: <Manager className="org.apache.catalina.session.PersistentManager" debug="3" saveOnRestart="true" maxActiveSessions="-1" minIdleSwap="-1" maxIdleSwap="-1" maxIdleBackup="-1"> <Store className="org.apache.catalina.session.JDBCStore" driverName="org.gjt.mm.mysql.Driver" connectionURL="jdbc:mysql://localhost/tomcat?user=USERNAME&password=PASSWORD&useSSL=false" sessionTable="tomcat$sessions" sessionIdCol="id" sessionDataCol="data" sessionValidCol="valid" sessionMaxInactiveCol="maxinactive" sessionLastAccessedCol="lastaccess" checkInterval="60" debug="99" /> </Manager> logging.properties: […]
我想要做的是通过客户端证书到我的PHP页面。 为了testing,我在Linuxterminal上使用curl : curl –cert cert.pem 'https://example.com/test.php' 在test.php ,我已经设置为打印$_SERVER超全局: <?php print_r($_SERVER); ?> 在Apache中,我有以下选项: <IfModule mod_ssl.c> <VirtualHost _default_:443> … SSLVerifyClient optional_no_ca SSLVerifyDepth 1 SSLOptions +StdEnvVars +ExportCertData … </VirtualHost> </IfModule> 在执行我的curl命令后,我看到$_SERVER['SSL_CLIENT_CERT']variables是空的: Array ( [HTTPS] => on [SSL_TLS_SNI] => example.com [SSL_SERVER_CERT] => — REDACTED — [SSL_CLIENT_CERT] => [HTTP_USER_AGENT] => curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3 [HTTP_HOST] => […]