我的Web应用程序在我控制的不同数量的主机上运行.为了防止需要更改每个vhost的Apache配置,我在我的repo中使用.htaccess文件添加了大部分配置,因此每个主机的基本设置只是几行.这也可以在部署新版本时更改配置.目前.htaccess(un)设置头文件,做一些重写魔术并控制UA的缓存.
我想使用.htaccess在应用程序中启用HSTS.只需设置标题很简单:
Header always set Strict-Transport-Security "max-age=31536000"
Run Code Online (Sandbox Code Playgroud)
但规范明确指出:"HSTS主机不得在通过非安全传输传输的HTTP响应中包含STS头字段." 因此,我不希望在通过HTTP连接发送标头时发送标头.见http://tools.ietf.org/html/draft-ietf-websec-strict-transport-sec-14.
我试图使用环境变量设置标题,但我被困在那里.有谁知道怎么做?
我想在我的网站上缓存图像和其他文件,所以我做的是确保mod_headers和mod_expires: -
/usr/sbin/httpd -l
Run Code Online (Sandbox Code Playgroud)
然后编辑.htaccess为: -
ExpiresActive On
ExpiresDefault A0
# Set up caching on media files for 1 year (forever?)
<FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$">
ExpiresDefault A29030400
Header append Cache-Control "public"
</FilesMatch>
# Set up caching on media files for 1 week
<FilesMatch "\.(gif|jpg|jpeg|png|swf)$">
ExpiresDefault A604800
Header append Cache-Control "public"
</FilesMatch>
# Set up 2 Hour caching on commonly updated files
<FilesMatch "\.(xml|txt|html|js|css)$">
ExpiresDefault A9200
Header append Cache-Control "proxy-revalidate"
</FilesMatch>
# Force no caching for dynamic files
<FilesMatch "\.(php|htm)$">
ExpiresActive Off
Header …
Run Code Online (Sandbox Code Playgroud) 我想检查我的服务器中是否启用了mod_headers和mod_expires模块
是否有一种方法可以使用某些php函数列出apache启用/禁用模块,就像我们使用phpinfo()列出php信息一样; 功能?
我正在运行Apache 2.2.26:
Server version: Apache/2.2.26 (Unix)
Server built: Jan 17 2014 12:24:49
Cpanel::Easy::Apache v3.22.30 rev9999 +cloudlinux
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用mod_headers来编辑Set-Cookie标头并添加安全或httpOnly标志,但它根本不起作用(什么都不做,不会给出HTTP 500错误).
我可以使用"修改""附加",Header命令的指令没有问题,只是没有编辑.我不知道为什么...
我尝试了很多组合,但这就是我在.htaccess中所拥有的:
Header edit Set-Cookie "(.)([Hh][Tt][Tt][Pp][Oo][Nn][Ll][Yy])?(.)" "$1$2 ;HTTPOnly"
Header edit Set-Cookie "(.)([Ss][Ee][Cc][Uu][Rr][Ee])?(.)" "$1$2 ;Secure"
Run Code Online (Sandbox Code Playgroud)
我愿意接受任何自动将标志添加到每个Set-Cookie响应的解决方案,而无需在应用程序中编辑代码.我无权在Web服务器上安装其他项目,但Web服务器具有在大多数Web主机上找到的标准的很长的Apache模块列表.
当充当反向代理时,apache会添加x-forwarded标头,如此处所述.
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#x-headers
在我的配置中,我已将服务器A配置为转发代理.有一个这样的规则:
RewriteRule proxy:(.*example.com)/(.*) $1.mysecondserver.com/$2 [P]
Run Code Online (Sandbox Code Playgroud)
此规则允许服务器从我的其他服务器请求资源.
在第二个服务器(原始)上,我有一个资源的虚拟主机容器和另一个重写规则,如下所示:
RewriteRule some-regex some-url [P]
Run Code Online (Sandbox Code Playgroud)
它似乎没有这样的意义,但是我遗漏了许多其他的东西,因为它不是问题的一部分.
但是,最终请求具有以下标头:
[X-Forwarded-For] => ip of 1st server
[X-Forwarded-Host] => example.myseconserver.com
[X-Forwarded-Server] => example.com
Run Code Online (Sandbox Code Playgroud)
我想要那些标题消失了.
我似乎无法用mod_headers取消它们.我可以添加更多条目,但我无法删除它们
有任何想法吗?
我想根据访问的路径文件有条件地设置缓存头.基本上,访问http://www.example.com/cache/$cache_key/*
应该在将来的缓存头中提供远远的文件.
我正在使用重写规则来设置环境变量,然后尝试根据该变量设置缓存控制标头.但是,看起来这个变量在这个过程中设置的时间太晚了; 条件头规则永远不会被执行.
RewriteRule ^cache/.*?/(.*) /$1 [env=asset:true,L]
Header set Cache-control "max-age=30"
Header set Cache-Control "max-age=31536000" env=asset
Header unset ETag env=asset
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?我尝试了目录和位置块的几种组合但没有成功.
如果http_referer来自谷歌(.com/.ru/.co.uk/english/etc.等),我想htaccess执行以下代码.这可能吗?
<filesMatch ".(jpg|jpeg|png|gif)$">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</ifModule>
</FilesMatch>
Run Code Online (Sandbox Code Playgroud) 我正在使用apache服务器,我想有条件地添加标头.
如果URI匹配某个正则表达式,我想添加标题Access-Control-Allow-Origin: *
.有什么好办法呢?
到目前为止我尝试过的:
我添加了请求处理程序调用的代码,使用apr_table_add(rq->headers_out, "Access-Control-Allow-Origin", "*")
.但是,每当标头Content-Type: application/x-javascript
也被设置时,似乎Apache在发送响应之前剥离了标头.这是错误的方法吗?为什么Apache会删除标题?
我听说mod_headers建议了.mod_headers是否能够根据与请求URI匹配的正则表达式放置标头?
我使用apache作为负载均衡器和反向代理.对于会话粘性,我正在创建一个包含节点路径的cookie.
Header set Set-Cookie "h=.%{BALANCER_WORKER_ROUTE}e; path=/; domain=.domain.com" env=BALANCER_ROUTE_CHANGED
Run Code Online (Sandbox Code Playgroud)
如何expires
将cookie中的值设置为从请求进入后X分钟?
mod_headers的文档甚至Set-Cookie
没有详细介绍,因此没有动态语法的信息expires
.
我尝试设置max-age
但不幸的是max-age不适用于IE 11,我们的很多客户都使用它.
mod_rewrite cookie的文档确实涵盖了如何在cookie中设置生命周期,所以我可以使用这个丑陋的mod_rewrite hack来使用它,但我必须为每个路由做一个规则,因为它在我的<Proxy balancer://my_cluster>
部分中不起作用:
RewriteCond %{HTTP_COOKIE} h=.1 [NC]
RewriteRule . - [CO=h:.1:.domain.com:30:/]
RewriteCond %{HTTP_COOKIE} h=.2 [NC]
RewriteRule . - [CO=h:.2:.domain.com:30:/]
RewriteCond %{HTTP_COOKIE} h=.3 [NC]
RewriteRule . - [CO=h:.3:.domain.com:30:/]
RewriteCond %{HTTP_COOKIE} h=.4 [NC]
RewriteRule . - [CO=h:.4:.domain.com:30:/]
RewriteCond %{HTTP_COOKIE} h=.5 [NC]
RewriteRule . - [CO=h:.5:.domain.com:30:/]
RewriteCond %{HTTP_COOKIE} h=.6 [NC]
RewriteRule . - [CO=h:.6:.domain.com:30:/]
RewriteCond %{HTTP_COOKIE} …
Run Code Online (Sandbox Code Playgroud) 问题描述:我想将我的网站设置为"Access-Control-Allow-Origin",所以我将它设置在apache的配置中(几乎在任何地方),但它不起作用.我还设置了其他标题进行测试,但它仍然无法正常工作.
Apache版本: 2.2.22
Apache模块: http ://www.anwcl.com/test/show_modules.php
我的目标网址:
http://www.anwcl.com/test/test_only_div.html
Run Code Online (Sandbox Code Playgroud)
它链接到我的本地文件:
e:\wamp\www\test\test_only_div.html
Run Code Online (Sandbox Code Playgroud)
E:\ WAMP\BIN\apache的\ apache2.2.22 \的conf\httpd.conf文件
...
LoadModule headers_module modules/mod_headers.so
...
Include conf/extra/httpd-vhosts.conf
...
Run Code Online (Sandbox Code Playgroud)
E:\ WAMP\BIN\apache的\ apache2.2.22 \的conf \额外\的httpd-vhosts.conf
NameVirtualHost *:80
<VirtualHost *:80>
Header add Access-Control-Allow-Origin "*"
Header echo ^TS
Header add MyHeader "Hello Joe. It took %D microseconds for Apache to serve this request."
ServerAdmin xxx@gmail.com
DocumentRoot "E:/wamp/www/"
ServerName www.anwcl.com
ErrorLog "logs/xxx.log"
CustomLog "logs/xxx.log" common
<Directory "E:/wamp/www/">
Header add Access-Control-Allow-Origin "*"
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny …
Run Code Online (Sandbox Code Playgroud) mod-headers ×10
apache ×9
.htaccess ×4
mod-rewrite ×3
caching ×2
cookies ×2
mod-expires ×2
apache2 ×1
cors ×1
http-headers ×1
httponly ×1
mod-proxy ×1
phpinfo ×1
security ×1