Drupal背后的SSL卸载反向代理 - 这配置是否正确? -- uri 领域 和 proxies 领域 drupal 相关 的问题

Drupal behind a SSL offloading reverse proxy — is this config correct?


6
vote

问题

中文

我们正在转换现有的Drupal安装,以作为SSL卸载代理的SSL-only网站运行。 Drupal本身没有SSL,并且在Apache上的端口80上运行。

我们认为我们认为是一个非常成功的配置:

在世界的Nginx末端看起来像:

  server {     listen              80;     server_name         staging.example.com;     return              301 https://staging.example.com$request_uri; }  server {     listen                  443 ssl;     server_name             staging.example.com;     ssl_certificate         $chained_cert_path     ssl_certificate_key     $private_key_path;      location / {         proxy_pass          http://$backend_ip;         proxy_set_header    Host $host;         proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;         proxy_set_header    X-Forwarded-Proto $scheme;         proxy_set_header    X-Forwarded-By $server_addr:$server_port;         proxy_set_header    X-Real-IP $remote_addr;         proxy_redirect      http:// https://;     } }   

和在Drupal站点的配置中我们正在运行:

  // reverse proxy settings and such $conf['reverse_proxy'] = TRUE; $conf['reverse_proxy_addresses'] = array($proxy_ip); $base_url = 'https://staging.example.com';   

正如我所说,这似乎是通过所有测试,但我的蜘蛛侠说这太容易了,并且在Drupal的某些部分有一个疯狂的问题我们不太了解它 - 手动铺平$ Base_URL只是没有坐在我身边。这里有地雷吗?

英文原文

We are transitioning an existing drupal installation to run as a SSL-only site behind a SSL offloading proxy. Drupal itself has no SSL and is running on port 80 on apache.

We've got what we think is a pretty successful configuration:

On the nginx end of the world it looks like:

server {     listen              80;     server_name         staging.example.com;     return              301 https://staging.example.com$request_uri; }  server {     listen                  443 ssl;     server_name             staging.example.com;     ssl_certificate         $chained_cert_path     ssl_certificate_key     $private_key_path;      location / {         proxy_pass          http://$backend_ip;         proxy_set_header    Host $host;         proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;         proxy_set_header    X-Forwarded-Proto $scheme;         proxy_set_header    X-Forwarded-By $server_addr:$server_port;         proxy_set_header    X-Real-IP $remote_addr;         proxy_redirect      http:// https://;     } } 

And in the drupal site's config we are running:

// reverse proxy settings and such $conf['reverse_proxy'] = TRUE; $conf['reverse_proxy_addresses'] = array($proxy_ip); $base_url = 'https://staging.example.com'; 

As I said this seems to be passing all tests, but my spidey sense is saying this was too easy and there is a fugly problem waiting somewhere in some part of drupal we don't understand well enough -- manually paving $base_url just isn't sitting right with me. Are there landmines here?

     

回答列表

5
 
vote

您不必指示 $base_url = 'https://staging.example.com'; ,您可以有这样的内容:

  server {     listen              80;     server_name         staging.example.com;     return              301 https://$host$request_uri; }  server {     listen                  443 ssl;     server_name             staging.example.com;     ssl_certificate         $chained_cert_path     ssl_certificate_key     $private_key_path;      location / {         proxy_pass          http://$backend_ip;         proxy_set_header    Host $host;         proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;         proxy_set_header    X-Forwarded-Proto $scheme;         proxy_set_header    X-Real-IP $remote_addr;     } }   

和您的Drupal设置:

  $conf['reverse_proxy'] = TRUE; $conf['reverse_proxy_addresses'] = array($proxy_ip);  // from http://devblog.more-onion.com/using-drupal-behind-reverse-proxy if (   isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&   $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' &&   !empty($conf['reverse_proxy']) &&   in_array($_SERVER['REMOTE_ADDR'], $conf['reverse_proxy_addresses']) ) {   $_SERVER['HTTPS'] = 'on';   // This is hardcoded because there is no header specifying the original port.   $_SERVER['SERVER_PORT'] = 443; }   
 

You don't have to indicate $base_url = 'https://staging.example.com'; , you can have something like this:

server {     listen              80;     server_name         staging.example.com;     return              301 https://$host$request_uri; }  server {     listen                  443 ssl;     server_name             staging.example.com;     ssl_certificate         $chained_cert_path     ssl_certificate_key     $private_key_path;      location / {         proxy_pass          http://$backend_ip;         proxy_set_header    Host $host;         proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;         proxy_set_header    X-Forwarded-Proto $scheme;         proxy_set_header    X-Real-IP $remote_addr;     } } 

and in your Drupal settings:

$conf['reverse_proxy'] = TRUE; $conf['reverse_proxy_addresses'] = array($proxy_ip);  // from http://devblog.more-onion.com/using-drupal-behind-reverse-proxy if (   isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&   $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' &&   !empty($conf['reverse_proxy']) &&   in_array($_SERVER['REMOTE_ADDR'], $conf['reverse_proxy_addresses']) ) {   $_SERVER['HTTPS'] = 'on';   // This is hardcoded because there is no header specifying the original port.   $_SERVER['SERVER_PORT'] = 443; } 
 
 
   
   

相关问题

3  如何允许在具有不同查询字符串的同一URL上重定向?  ( How to allow for redirecting on same url with different query strings ) 
我正在使用drupal 7.我有大约120个具有不同查询字符串的URL,而 drupal不允许我在相同的URL上重定向,以不同的查询字符串/参数。 例如: 我必须从这个URL博客/它的时间占据它重定向它?Page = 1 到博客/它的时间占用 - 它。查看下面给出的更多例子; (from url) blog/a...

0  /搜索附加到我所有的URL  ( Search is appended to all my urls ) 
是否有人知道为什么drupal 7占据所有URL别名,并在每个URL的末尾添加/搜索? 所以它创建重复内容,重复标题标记等,提供相同的内容和2个不同的URL。 有谁知道如何解决这个问题? ...

0  接管URL并从URL获取变量  ( Taking over a url and getting variables from url ) 
我有一个(非Drupal绑定)表,我需要在我的网站内显示。 它有关于"runs" 的信息: userid(drupal) - runid - name - 距离 - ...等等 我想转到网站/运行/运行并显示该特定运行的数据。 我不知道是否有一种简单的方法,而无需为它创建自定义模块?我基本上只需要$获取...

8  如何将URL别名转换回节点ID  ( How to convert url aliases back to node id ) 
我想知道如何将URL路径转换回它是自己的节点(节点/ nid)。我希望从给定路径获取原始节点ID。例如。 path ="新闻/我的新闻" ..并将其追溯到获得自己的原始URL,例如, 65.请告知。谢谢。 ...

1  如何在具有上下文过滤器的视图块中显示最近的用户版本?  ( How to display the recent user revision in a views block with contextual filters ) 
我们正在设置一个设置,我们需要能够通过视图块显示用户修订字段。我们正在使用用户修订模块甚至修复了该模块的上下文过滤器插件上的错误。 假设URL是/ user / abc /修订/ 123路径上VID的上下文过滤器的所有内容都正常工作。 当我们想要显示相同的视图时,问题出现了,因为它没有修订URL模式。它只是用户/ a...

0  uri用于服务的行动  ( Uri for actions of services ) 
我已经定义了以下服务。 'salesforce_subscriptions' => array( 'operations' => array( 'delete' => array( 'help' => 'Remove subscriptions from SalesForce'...

0  菜单基于URL [重复]  ( Menu based on url ) 
这个问题已经在这里有答案: 如何根据子域切换徽标和菜单链接? (3个答案) ...

1  Drupal在某些节点上显示面包屑  ( Drupal show breadcrumbs on certain nodes ) 
我一直在使用面包屑模块​​的路径( https://drupal.org/project/path_breadcrumbs < / a>),允许我根据节点创建面包屑。但是,Crumb的页面显示,显示了面包屑的标题。 例子:首页&gt; node_title 我想要家庭面包,但不是node_title(我也是一个很长...

0  如何从RAW路径和参数构建URL路径?  ( How to build a url path from raw path and arguments ) 
在Drupal 7中,从模块内, 我的目标是拥有菜单路径(例如" /path/to/page/%/%/view/% " )和一个参数数组(例如 99887661 ),能够构建生成的路径(例如" /path/to/page/foo1/foo2/view/foo3 " )。 在Drupal API中查看遍历后,我找不到一...

0  清洁网址问题  ( Problems with clean urls ) 
我有一个清洁的网址有问题。我环顾四周,我的问题看起来不像这个网站上的任何东西或互联网上的任何地方。 我有一个 .htaccess 文件。它在那里,它正在工作。我知道是因为我设置了它来删除www。它是。 我转到配置 - &gt;搜索和meta-&gt;清洁网址(有些人不通过干净的网址测试,但我确实如此,它甚至没有提出)...

0  如何在D7的清洁URL接管之前触发Mod_Rewrites的情况。  ( How do i use htaccess to trigger mod rewrites before d7s clean urls take over ) 
我从olddjango.com迁移到newdrupal.com,需要一种方法来改变旧样式的URL进入我们为新的Drupal应用程序选择的格式。 除了重写它们外,我希望最终的"纠正" 规则要重定向,注册301. URL的结构有一个标记我用作为重写的标记,这是我之前更改的最后一件事重定向(因此,除非是来自旧网站,否则UR...

14  如何基于FID获取文件的绝对路径  ( How to get the absolute path for files based on fid ) 
如何基于FID获取文件的绝对路径?对不起,如果这是重复的,我做了一个搜索,但无法找到答案。 ...

3  查看将当前页面节点ID插入图像链接URL  ( Views insert current page node id to image link url ) 
我想创建一些内容图像字段的块视图。我正在尝试将当前页面节点ID插入到图像链接的路径。因为链接页面是实体表单,所以我尝试在实体表单的一个字段中预先填充节点ID。 如何使用视图重写结果写入当前节点ID到URL? 像那样的URL模式。 example.com/borm?edit[field_whatisreffermerm...

3  如何修改Drupal,以便仅通过整个站点使用相对URL?  ( How do i modify drupal so that only relative urls are used through the whole sit ) 
我有一个客户,他说他无法从公司的建筑物内部查看他的公司网站。他们的网络工程师要求确保Domain.com不包含在Drupal生成的任何URL中。 他们只想在代码中只有相对的路径。任何见解? ...

0  如何在内容类型中为图像地址设置别名URL?  ( How to set alias url for image address in a content type ) 
我为内容类型添加了一个图像字段,它的目录是 /content_type_image 。它正常工作,但是当我将内容添加到此内容类型时,网站上的上传的图像URL是 99887662 我的意思是它是清楚该图像在服务器目录中的位置。有没有办法为文件和​​图像设置别名URL,以隐藏此类URL? ...

2  子路径URL别名似乎没有射击404  ( Subpath url alias does not seem to fire 404 ) 
我使用subpath_alias,SO / node / 4 /视频别名也可用。 但是现在,我不确定涉及子路径,/节点/ 4 / foo没有火灾404,而是显示页面,好像它是/ node / 4。 任何线索? tia,tom ...

2  如何动态更改$ Global ['base_path']变量?  ( How do i dynamically change the globalbase path variable ) 
示例方案: 所有经过身份验证的用户应该在每个URL路径的开头看到 /members/ ,所有匿名用户都应该在每个URL路径的开头看到 /guests/ 。 所以如果匿名用户访问 example.com/node 他们将被重定向到 example.com/guests/node ,并且一旦他们登录,他们就会被重定向到 ...

1  Drupal 7 IMG SRC路径问题  ( Drupal 7 img src path issue ) 
我创建了一个块,其中具有src ="sites / mysite / files / ImageName" 的IMG。它有效每个节点,但在搜索页面中加载失败。 是搜索模块的问题吗? Drupal 7,我希望,具有统一的URL管理,例如: exapmle.com/files,exapmle.com/modules...

0  通过SSL创建的URL重定向仅适用于SSL  ( Url redirect created over ssl only works over ssl ) 
我已添加重定向通过: 配置&gt;搜索和元数据&gt; URL重定向 通过SSL访问站点。当我添加链接FROM Box Auto填充用 https://myRootURL.com/ :的重定向根 此重定向适用于 https://myRootURL.com/redirectedLink 但不适用于非SSL: ...

0  清除缓存[已关闭]时,Dev站点将恢复为生产站点URL  ( Dev site reverts to production site url when clearing cache ) 
此问题似乎在帮助中心中定义的范围内涉及Drupal。。 想要改进这个问题?更新问题,所以它是关于drupal答案的主题。 ...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.