您可以为apache制定一个全面的重写规则,它的行为有点像一个别名,但可以在.htaccess文件中实现,而别名不能。 举个例子,假设你的文档根是这样的层次结构: /.htaccess /test/ /test/.htaccess /test/file 您可以通过使根.htaccess包含以下命令来“testing”到testing文件夹的所有请求: RewriteEngine On RewriteRule ^(.*)$ /test/$1 [L] 而第二个.htaccess包含: RewriteEngine On 这很好,通常是你所需要的。 它只是有一个问题 – 它创build了多个有效的url。 现在你可以用/file和/test/file来访问这个/test/file 。 通常这不是问题,但如果添加一个名为/test/test的文件,将会看到问题,因为假别名完全停止工作。 如果子文件夹有一个复杂的.htaccess它自己可能会导致重大的麻烦。 有没有办法假冒一个.htaccess别名没有原来的url仍然工作? (任何RewriteCond的子文件夹,将检查,如果我们已经被重写或不?
我有我需要限制访问特定IP(10.0.0.5)的URL。 当我以下面的方式直接访问时,它是完美的: <Location /incoming> Order Allow,Deny Deny from 10.0.0.5 Allow from all </Location> 但是,当这个IP来自代理(代理IP:192.168.1.43)这个解决scheme不起作用。 这是我在日志中看到的: 10.0.0.5,192.168.1.43 – [24 / May / 2017:16:03:54 +0300]“POST / incoming HTTP / 1.0”200 698 0/6899“ – ”“ – 我试图做下一个 – 添加代理部分: <Proxy /incoming > Order Allow,Deny Deny from 10.0.0.5 Allow from all </Proxy> 它也没有帮助。 我需要你的帮助,朋友们!
我有一个运行在同一台计算机上的apache2和SOCKS代理服务器的网站。 该网站可以公开访问,我的SOCKS5服务器在本地主机上。 如何使来自Apache服务器的传入和传出stream量通过我的SOCKS服务器? 这很容易通过客户端来完成,因为他们可以托pipeSOCKS服务器(自己)并更改configuration(例如通过Firefoxnetworking)。 我需要这个的原因是因为我有修改的SOCKS中的function,操纵交通为公司的目的。 模型:客户端< – > SOCKS服务器< – > … Internet … < – > SOCKS服务器< – > Web服务器
我目前有一对docker容器在一个节点上运行,其中两个是Apache Web服务器,我configuration了一个反向代理和Portainer,允许我通过GUIpipe理我的容器。 我已经尝试跟随这个线程: https : //github.com/portainer/portainer/issues/488,但已经无法将stream量从Apache转发到Portainer。 这是我的httpd.conf文件: <Location /portainer/> AuthBasicProvider ldap AuthLDAPURL someldap AuthType Basic AuthName SomeAuthName require valid-user </Location> ProxyPass /portainer/api/websocket/ ws://172.18.0.8:9000/api/websocket/ </VirtualHost> 有任何想法吗? 谢谢!
在我们的Apache Web服务器集群上,我们有mod_pagespeed设置与memcached和域分片到无Cookie域。 我们的Web服务器位于具有非粘性会话的负载均衡器和SSL卸载之后。 使用SSL卸载时,负载平衡器会始终向常规http请求Web服务器,但会发送相应的X-Forwarded标头。 Apache Web服务器未configuration为SSL / https。 一切正常的mod_pagespeed一切正常,但不是https。 通过https访问网站: CSS被标记,组合等等 JS不会被标记和组合 有些媒体(PNG,JPEG,GIF)被标记,有些则不是 资源不是针对分割的域 我已经附加了我的各种configuration,请注意,单个虚拟主机上启用了mod_pagespeed – 我已经从下面的configuration中删除了不相关的虚拟主机。 在下面的configuration中,我已经将我们的主域名更改为example.com ,将我们的无Cookie域名更改为nocookie.com 阿帕奇 Version : 2.2.15 Release : 39.el6.centos mod_pagespeed版本: 1.9.32.14 /etc/httpd/conf.d/vhost.conf ## Virtual Hosts # <Directory "/hostroot/www/vhost/*/httpdocs"> Order allow,deny Allow from all Options FollowSymLinks AllowOverride none </Directory> NameVirtualHost *:80 <VirtualHost _default_:80> ServerAdmin [email protected] DocumentRoot "/hostroot/www/vhost/default/httpdocs" ServerName webserver.example.com […]
这是我的目标: /any-directory-or-subdirectory应显示/any-directory-or-subdirectory/index.html的内容 /any-directory-or-subdirectory/应该redirect到/any-directory-or-subdirectory (没有结尾的斜杠) /any-directory-or-subdirectory/index.html应该redirect到/any-directory-or-subdirectory /any-directory-or-subdirectory/something.htm我应该显示自己的内容。 我有这个工作在一个特定的目录完美: DirectorySlash Off RewriteEngine on RewriteRule ^specific-dir$ /specific-dir/index.html [L,E=LOOP:1] RewriteCond %{ENV:REDIRECT_LOOP} !1 RewriteRule ^specific-dir/$ /specific-dir [R=301,L] RewriteCond %{ENV:REDIRECT_LOOP} !1 RewriteRule ^specific-dir/index.html$ /specific-dir [R=301,L] 我需要这个工作在所有的子目录,而不是一个特定的,也为同样的function在网站的根源。 我已经尝试了很多东西来适应这个代码的工作,但迄今为止还没有任何运气。
我有一个RewriteRule重写包含文件版本的文件的任何请求没有版本: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.+)\.[0-9a-f]{32}(\.[0-9a-z]{2,6})$ $1$2 [L] 这意味着只要文件styles.<version-id>.css被请求,就会被重写为styles.css 。 现在,如果要求文件的版本化版本,我怎样才能设置caching头文件,以便文件被caching更长的时间? 换句话说,如果文件styles.css被重新定义,它应该被caching24小时,而文件styles.<version-id>.css应该被caching365天。 我已经尝试使用此代码片段重写之前和之后使用FilesMatch设置caching: <FilesMatch ".+\.[0-9a-f]{32}\.[0-9a-z]{2,6}"> Header set Cache-Control "max-age=31536000, public" </FilesMatch> 但它不起作用。 也许它不匹配,因为文件名被重写。 我不知道。 我也尝试使用环境variables: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.+)\.[0-9a-f]{32}(\.[0-9a-z]{2,6})$ $1$2 [L,E=AutoVersion] Header set Cache-Control "max-age=31536000, public" env=AutoVersion 但是我也无法得到这个工作。 有什么方法可以根据原始请求设置重写请求的caching策略吗?
我曾经看过类似的问题,但他们没有涵盖我的情况。 例如: 是否可以为请求启用http压缩? 场景 : 服务器A正在运行一个生成大型XML文件的服务。 在服务器A上,Apache被安装为代理服务器(PUT / POST)消息到我们的服务器B. 由于这些文件相当大,我想在发送到服务器B之前压缩(例如gZip / deflate)XML。 我可以使用服务器B上的mod_deflate(inputfilter)自动解压缩消息。 在服务器A上,我还configuration了mod_deflate(设置为outputfilter),但请求没有被压缩 – 只有来自服务器B的响应可以被接受为压缩。 问题如何configuration服务器A上的Apache在发送到服务器B之前压缩请求主体? 限制/更多信息: 我无法修改/实现服务中的XML压缩(closures软件)。 我无法将场景更改为请求文件的服务器B. 过程不需要是HTTP投诉
我做了这个https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-14-04 然后从下面的apache切换到nginx *** https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04 ***一切都很好。 但现在facebookdebugging器给我:curl错误:SSL_CACERT SSL证书问题:无法获得本地发行者证书 ***问:如何重新下载证书颁发机构的所有证书,并在我的情况下重新下载? Alexs-MacBook-Air:~ alex$ openssl s_client -connect goeasysmile.com:443 CONNECTED(00000003) depth=0 /CN=goeasysmile.com verify error:num=20:unable to get local issuer certificate verify return:1 depth=0 /CN=goeasysmile.com verify error:num=27:certificate not trusted verify return:1 depth=0 /CN=goeasysmile.com verify error:num=21:unable to verify the first certificate verify return:1 — Certificate chain 0 s:/CN=goeasysmile.com i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3 […]
我有一个Apache 2.2下的代理configuration,它将/blog所有请求传递给我无法控制的主机。 我想从代理响应中取消设置特定的HTTP头( X-Powered-By: PHP ),这样浏览器就不可见了。 我试过这个: ProxyPass /blog http://blog.example.com ProxyPassReverse /blog http://blog.example.com Header Always Unset X-Powered-By 还有这个变化: <Location /blog> ProxyPass http://blog.example.com ProxyPassReverse http://blog.example.com Header Always Unset X-Powered-By </Location> 在这两种情况下,头都通过代理发送。 我也试过Header Always Edit ,也没有效果。 有趣的是,如果我使用Header Always Set X-Powered-By Test ,则得到的响应包含X-Powered-By: Test, PHP – 即我的值被添加在来自代理的值之前 。 我怀疑mod_proxy运行“太迟” mod_headers操纵响应。 是否有办法让Header在“稍后”运行,或者其他一些指令可以在代理返回后处理响应。