对于非本地连接,apache将http重写为https

时间:2016-05-31 12:31:34

标签: apache .htaccess ssl nginx

我尝试将来自非localhost连接的所有请求从http重定向到https。

我使用this combination https-> nginx - >清漆 - > apache2并希望在没有ssl的情况下将重定向直接连接到apache

FXMLLoader myLoader = new FXMLLoader(getClass().getResource(resource));

这不起作用

更新1

我说这个:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{HTTP_HOST} !=localhost
    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP_HOST} ^(?:www\.)?(.*)$ [NC]
    RewriteRule (.*) https://%1%{REQUEST_URI} [L,R=301]

这是工作 - 浏览器中的网址被重定向到https:// 但我有无限循环,所以apache重定向到https:// nginx作为http的apache并重定向。怎么解决?

更新2

如果我换线

RewriteCond %{REMOTE_ADDR} !=localhost
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.*)$ [NC]
RewriteRule (.*) https://%1%{REQUEST_URI} [L,R=301]

RewriteCond %{REMOTE_ADDR} !=localhost

重定向停止工作

更新3 这不起作用,因为我有

http - &gt;清漆 - &gt;阿帕奇 要么 https - &gt; nginx - &gt;清漆 - &gt;阿帕奇

所以对于apache,所有时间都有127.0.0.1 所以我需要知道这是直接从http或清漆

的varnish请求

可能在nginx中添加一些var(header?),如果请求在apache htacces中没有这个头,则重定向到https。什么是最好的方法?

更新4 我设置了iginx -

RewriteCond %{REMOTE_ADDR} !=127.0.0.1

在apache中

add_header Mea-request nginx;

但仍然无效

我认为这条线不正确

RewriteCond %{HTTP:Mea-request} != ^nginx$
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.*)$ [NC]
RewriteRule (.*) https://%1%{REQUEST_URI} [L,R=301]

1 个答案:

答案 0 :(得分:0)

工作版:

在nginx中

Date date0005 = new java.util.Date();

date0005.setHour(00);
date0005.setMinutes(05);
// instead of this here can be function to found nearest hh:m5 from run

Timer timer = new Timer();

timer.sc(myOwnTimerTask,date0005, 600000);

in varnish

proxy_set_header X-APP_MEAREFER nginx;

在apache2中

set resp.http.X-APP_MEAREFER = req.http.X-APP_MEAREFER;

在任何人都知道更好的方式请信息。