Articles of redirect

从Apache httpsredirect中排除单个文件

我在我的http.conf文件中有一个redirect规则,将所有HTTP请求redirect到HTTPS: RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 这很好地作为一个整体的方法,但是我想排除 robots.txt被redirect到https( 所以它应该是http://www.mysite.com/robots.txt )这主要是因为谷歌拒绝抓取我的robots.txt通过SSL(?) 我尝试了几种不同的方式,但到目前为止,它是404的文件或忽略它,并转到https://www.mysite.com/robots.txt (根据网站的其余部分) 我尝试了以下几点: RewriteEngine On RewriteCond %{HTTPS} off RewriteCond %{REQUEST_URI} !^robots.txt RewriteRule (.*)$ https://%{HTTP_HOST}/$1 [NC,R=301,L] 任何build议,将不胜感激。

nginx无限302findredirect循环

我正在使用nginx将多个域映射到谷歌应用程序引擎。 在这个特定的情况下,我将多个域映射到同一个租户 。 在我的代码中有一个configuration知道哪个域是主域,当请求进来我检查主机是否是主域,如果不是我redirect到主域。 例如,假设www.aaa.com是默认设置的域 aaa.com -> www.aaa.com www.bbb.com -> www.aaa.com ccc.com -> www.aaa.com … 偶尔随机发生的事情是JavaScripturl进入nginx的redirect循环。 请注意,请求不会触及appengine。 nginx正在创build这个302 Found循环。 这在过去两周里发生了两次。 请求path类似于www.aaa.com/22/foobar.js ,其中path的第一部分是JavaScript文件的版本号。 具有相同uri格式的css文件www.aaa.com/22/foobar.css不会有这个redirect循环。 如果我部署新版本,文件将再次正确服务。 所以部署一个版本23和访问www.aaa.com/23/foobar.js将再次工作。 另外如果我使用像www.aaa.com/22/foobar.js?345重新启动nginx请求caching或甚至重新启动nginx运行的机器没有帮助。 build立一个具有相同的确切configuration的新机器没有问题的文件服务。 那么可能会导致这个redirect循环? 一旦发生,我怎么能摆脱它? 有没有在Nginx的caching(我知道Nginx默认情况下不caching)我不知道? 该机器可能caching这些redirect? 这里是我的nginx.conf user nginx; worker_processes 2; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; server_names_hash_max_size 1024; server_names_hash_bucket_size 128; […]

Nginx不redirect,但正在工作

这是我第一次用nginx设置,我用它来代理nodejs。 HTTP在端口3000上,而HTTPS在端口3001上。 如果我去http://test.domain.com它加载常规的不安全页面。 如果我去https://test.domain.com它加载安全页面。 但我希望它从非httpsredirect到https。 我的configuration有什么问题? 这是我使用的整个domain.conf文件。 server { listen 80; server_name test.domain.com return 301 https://test.domain.com$request_uri; } server { listen 443 ssl; server_name test.domain.com; ssl_certificate /etc/nginx/ssl/domain.crt; ssl_certificate_key /etc/nginx/ssl/server.key; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header HOST $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass https://127.0.0.1:3001; proxy_redirect off; } } 我重新启动了nginx多次。 谢谢!

Nginx的HTML内容,而redirect

当在nginx中configurationredirect时,响应包含: <html>[CRLF] <head><title>301 Moved Permanently</title></head>[CRLF] <body bgcolor="white">[CRLF] <center><h1>301 Moved Permanently</h1></center>[CRLF] <hr><center>nginx</center>[CRLF] </body>[CRLF] </html>[CRLF] 在debugging时: curl -i http://www.domain.com 我可以隐藏redirecthtml的关于nginx的信息吗? 我通过设置more_set_headers "Server: ";pipe理关于nginx的隐藏信息more_set_headers "Server: ";

mod_rewrite确切的主机名与多个条件匹配

我有一套mod_rewrite的要求,这是我的头。 任何提示/指针,将不胜感激: 域: www.domain-europe.com www.domain.com www.domain-europe.com的请求应该redirect到www.domain.com/europe www.domain-europe.com/someurl的请求应redirect到www.domain.com/someurl 任何其他请求到非www.domain-europe.com或www.domain.com服务器应该被设置为www.domain.com 我可以做任何1和3或2和3这些工作,但不是所有三个在同一时间。 这是我尝试过的许多迭代之一: RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.domain-europe\.com$ [NC] RewriteRule (.*) http://www.domain.com/europe [R=301,L] RewriteCond %{HTTP_HOST} ^www\.domain-europe\.com/ [NC] RewriteRule (.*) http://www.domain.com$1 [R=301,L] RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC] RewriteCond %{HTTP_HOST} !^$ RewriteRule ^/(.*) http://www.domain.com/$1 [L,R]

NGINX – 删除URL末尾的index.php

我可以通过“www.dom.com/mypage”访问我的网页,该网页将redirect到“www.dom.com/mypage/”。 “www.dom.com/mypage/index.php”是主要的文件,但我想从url中删除这个,所以如果你input这个文件,它会将你redirect到“www.dom.com/mypage/”。 所有链接显示正确的页面,但我想从URL中删除它。

nginx和SSLredirect

我有一个我用作代理的nginx服务器。 我想要所有的请求作为正常的http请求转发,期望请求到api.mydomain.org,我希望与ssl / https运行的请求。 这与以下工作正常: server { listen 80; server_name api.mydomain.org; return 301 https://api.mydomain.org$request_uri; } server { listen 443; server_name api.mydomain.org; location / { proxy_pass http://backend; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_redirect off; proxy_buffering off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; } ssl on; ssl_certificate /etc/nginx/ssl/api.mydomain.org/server.crt; […]

ProxyPassReverse不使用302redirect

我正在使用Apache HTTPD代理本地Tomcat服务器: ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ 一切工作正常,除非我有一个302redirect。 出于某种原因,ProxyPassReverse不会重写localhost:8080,客户端将被redirect到localhost:8080,从而导致浏览器错误。 我怎样才能得到ProxyPassReverse 302redirect工作?

HAProxy / Varnish:redirect一定比例的stream量

我正在尝试为两个不同版本的网页测量单独的统计信息。 所以我需要将我的networkingstream量的一定比例redirect到不同于所请求的页面的页面(即page_1的请求的20%转到page_1.1)。 在我看来,清漆可以在本地统计stream量或请求。 我想我可以让Apache后端计算请求,插入一个自定义头,然后让Varnish发送一个重新启动到客户端,如果后端响应包含该特定的头。 任何想法或build议? 干杯, 杰里米 编辑:我忘了提及在光油前面有一个HAProxy istance,所以我在想另一个好办法做到这一点可以是: 关于HAProxy: 计数page1的请求 如果count> 80,则插入自定义标题 如果count = 100重置计数器 在清漆上 如果自定义头在请求问题客户端重新启动与page1-> page1.1重写 不知道如何用ACL,gpc0和stick-tables来做到这一点。 我正在学习寻找解决scheme:-) 一如既往,想法或build议是受欢迎的

SNI是否真的需要TLSv1(不安全)?

从Apache 2.4 文档 : 基于SSL名称的虚拟主机的第一个(默认)虚拟主机必须包含TLSv1作为允许的协议,否则Apache将不会接受来自客户端的SNI信息,并且仿佛客户端根本不支持SNI。 我想在我的服务器上启用多个启用TLS的站点,每个站点都提供不同的证书。 出于安全原因,我只允许TLSv1.1和TLSv1.2。 有一个安全的方法来打开SNI? 从我的configuration一个片段: <VirtualHost *:80> ServerName www.example.com Redirect permanent / https://www.example.com/ </VirtualHost> <VirtualHost *:443> ServerName www.example.com DocumentRoot /var/www/example.com SSLEngine on SSLProtocol all -SSLv2 -SSLv3 -TLSv1 [other SSL options] </VirtualHost> <VirtualHost *:80> ServerName www.example.org Redirect permanent / https://www.example.org/ </VirtualHost> <VirtualHost *:443> ServerName www.example.org DocumentRoot /var/www/example.org SSLEngine on SSLProtocol all -SSLv2 […]