SlideShare a Scribd company logo
1 of 29
Mauticをリバースプロキシの下で
使うときに気をつけること
⻘⼭	義万
(あおやま	よしかず)
About	me
Facebook:	
Twitter:	
Drupal.org:	
ANNAI	Inc
Drupal	Japan	User	Group
Drupalさっぽろ
https://www.facebook.com/yoshikazu.aoyama
@blauerberg
blauerberg
Experience
Drupal	contributor	(Core,	Views,	Console,	etc)
Mautic	contributor
Drupal	site	&	system
Internet	of	Things
Web	application	(Ruby	on	Rails,	Java,	Node.js,	etc)
Cloud/Server	side	design	and	administration	(Infrastructure	as
Code,	DevOps)
Embedded	Linux
Network	stack	for	telecommunication	network	(xDSL,	3G,	3.5G)
TCP/IP	Network	stack
Maintainer	of	Drupal	Console	(⽇本語ドキュメント)
2.0.0向けのバグ修正を取り込んで
もらってMauticのコントリビュー
ターになりました。
https://github.com/mautic/mautic/pull/1976
MauticとDrupalの統合ソリューシ
ョンなんかもやっています。
https://annai.co.jp/news/marketing_automation
Topics
MauticとトラッキングするWebサーバーをリバースプロキシーの下に
置いたらわりと⾯倒だったので、	その辺りのネタをお話します。
超シンプルな構成
MauticとトラッキングするWebサ
ーバーがプロキシー配下のプライ
ベートIPなゾーンにある場合
どんな問題が起こ
ったか
問題その1
同⼀IPに対してanonymousリー
ドが1件しか登録されない
これはリバースプロキシーの有無に関係なく発⽣する話ですが、
Mauticは同じIPアドレスからのanonymousリードは同⼀のリードとし
て扱います。これはバグではなくdesign(仕様)です。
どんな時に問題になるか
⼤きめの企業や学校など、単⼀の固定グローバルIPの下にたくさんの
ユーザーがいる場合、誰のアクセスか識別できない
固定ではないグローバルIPからのアクセスの場合、そのIPが違う⼈に
付与されると全くの他⼈からのアクセスが同⼀のanonymousリード
として管理される可能性がある
技術的な細かい話
	の実装を⾒てみましょう。
FingerPrintやJavascript	Trackingの機能を使ってもこの問題は解決し
ません。
getCurrentLead()
どうやって解決したか
	のパッチを適⽤。
最近	 	にissueも登録さ
れたので、やはりみなさんお困りの様⼦。
https://github.com/mautic/mautic/pull/1030
https://github.com/mautic/mautic/issues/2406
問題その2
リードのIPが全てリバースプロキ
シーのIPになる
技術的な細かい話
	の実装を⾒てみましょう。
HTTP_CLIENT_IP,	HTTP_X_FORWARDED_FOR,
HTTP_X_FORWARDED,	HTTP_X_CLUSTER_CLIENT_IP,
HTTP_FORWARDED_FOR,	HTTP_FORWARDED,	REMOTE_ADDR	の順
にチェックされる
各変数から近隣ノード	(カンマ区切りの最後の部分)のIPアドレスを取
得
プライベートIPや予約エリアのIPの場合、その変数は無視され次の変
数がチェックされる
getIpAddressFromRequest
今回の構成だと変数の値はこんな
感じ
1.2.3.4:	ユーザーのIP
210.123.32.147:	リバースプロキシーのグローバルIP
192.168.100.1:	リバースプロキシーのプライベート側IP
※設定される値は機器やサーバーの設定によります。
HTTP_X_FORWARDED_FOR: 1.2.3.4, 210.123.32.147, 192.168.100.1
REMOTE_ADDR: 210.123.32.147
getIpAddressFromRequest	のロ
ジックを適⽤すると
HTTP_X_FORWARDED_FOR	->	近隣ノードのIPアドレス
(192.168.100.1)がプライベートなので無視される
REMOTE_ADDR	->	プロキシーのグローバルIP	(210.123.32.147)	がリ
ードのIPとして認識される
どうやって解決したか
nginxで$proxy_add_x_forwarded_forの先頭のIPアドレスを
HTTP_CLIENT_IPに設定してphpに渡す。
map $proxy_add_x_forwarded_for $origin_addr {
default "";
~^(?<first_addr>.*?),.* $first_addr;
}
server {
...
fastcgi_param HTTP_CLIENT_IP $origin_addr;
...
}
まとめ
2.1.1時点では同⼀IPは同⼀リードとして扱われる、困る場合は要パ
ッチ。
プロキシー配下にある場合、環境変数を調整しないとリードのIPが期
待通り取れない場合があるので注意。必要に応じてWebサーバー側
で設定を⾏いましょう。
Think	ITでDrupal	8の⼊⾨記事を
連載中!
初⼼者でも挫折しないゼロから始めるDrupal	8⼊⾨
ANNAIではエンジニアを絶賛募集
中です!
リモートワーク可能です!
Contact	us
https://annai.co.jp/recruit

More Related Content

Similar to Mauticをリバースプロキシの下で使うときに気をつけること

[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用de:code 2017
 
Interactive connection2
Interactive connection2Interactive connection2
Interactive connection2Takao Tetsuro
 
ToolChainを使った次世代DevOps環境の作り方
ToolChainを使った次世代DevOps環境の作り方ToolChainを使った次世代DevOps環境の作り方
ToolChainを使った次世代DevOps環境の作り方Harada Kazuki
 
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイルVisual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイルAkira Inoue
 
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternApplication Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternAtsushi Kambara
 
Bluemix で構築するマーケティングオートメーション「Mautic」
Bluemix で構築するマーケティングオートメーション「Mautic」Bluemix で構築するマーケティングオートメーション「Mautic」
Bluemix で構築するマーケティングオートメーション「Mautic」Kohei Nishikawa
 
Community_Update_JP
Community_Update_JPCommunity_Update_JP
Community_Update_JPGo Chiba
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力ThinReports
 
Apache CloudStack Documentation
Apache CloudStack DocumentationApache CloudStack Documentation
Apache CloudStack DocumentationKimihiko Kitase
 
麦乃大学2回 MODX x MicrosoftWebMatrix
麦乃大学2回 MODX x MicrosoftWebMatrix麦乃大学2回 MODX x MicrosoftWebMatrix
麦乃大学2回 MODX x MicrosoftWebMatrixKei Mikage
 
Azure DevOps で始めるスタートダッシュ
Azure DevOps で始めるスタートダッシュAzure DevOps で始めるスタートダッシュ
Azure DevOps で始めるスタートダッシュYasuaki Matsuda
 
話題のNode-REDでIoTアプリを作ってみよう
話題のNode-REDでIoTアプリを作ってみよう話題のNode-REDでIoTアプリを作ってみよう
話題のNode-REDでIoTアプリを作ってみようKimihiko Kitase
 
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介Kohei Nishikawa
 
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013Takashi Someda
 
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)アシアル株式会社
 

Similar to Mauticをリバースプロキシの下で使うときに気をつけること (20)

[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
 
Try IoT with Node-RED
Try IoT with Node-REDTry IoT with Node-RED
Try IoT with Node-RED
 
Interactive connection2
Interactive connection2Interactive connection2
Interactive connection2
 
ToolChainを使った次世代DevOps環境の作り方
ToolChainを使った次世代DevOps環境の作り方ToolChainを使った次世代DevOps環境の作り方
ToolChainを使った次世代DevOps環境の作り方
 
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイルVisual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
 
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternApplication Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD Pattern
 
Bluemix で構築するマーケティングオートメーション「Mautic」
Bluemix で構築するマーケティングオートメーション「Mautic」Bluemix で構築するマーケティングオートメーション「Mautic」
Bluemix で構築するマーケティングオートメーション「Mautic」
 
Titanium実装最初の一歩.
Titanium実装最初の一歩. Titanium実装最初の一歩.
Titanium実装最初の一歩.
 
Drupal ISV 20160630
Drupal ISV 20160630Drupal ISV 20160630
Drupal ISV 20160630
 
Community_Update_JP
Community_Update_JPCommunity_Update_JP
Community_Update_JP
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
Apache CloudStack Documentation
Apache CloudStack DocumentationApache CloudStack Documentation
Apache CloudStack Documentation
 
麦乃大学2回 MODX x MicrosoftWebMatrix
麦乃大学2回 MODX x MicrosoftWebMatrix麦乃大学2回 MODX x MicrosoftWebMatrix
麦乃大学2回 MODX x MicrosoftWebMatrix
 
Azure DevOps で始めるスタートダッシュ
Azure DevOps で始めるスタートダッシュAzure DevOps で始めるスタートダッシュ
Azure DevOps で始めるスタートダッシュ
 
話題のNode-REDでIoTアプリを作ってみよう
話題のNode-REDでIoTアプリを作ってみよう話題のNode-REDでIoTアプリを作ってみよう
話題のNode-REDでIoTアプリを作ってみよう
 
Azure &lt;3 Openness
Azure &lt;3 OpennessAzure &lt;3 Openness
Azure &lt;3 Openness
 
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
Mautic Meetup Tokyo #3 データベース不要CMS:Gravの紹介
 
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
 
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)
書籍『Monacaで学ぶはじめてのプログラミング』 講義スライド(体験版)
 
Thing.jsについて
Thing.jsについてThing.jsについて
Thing.jsについて
 

Recently uploaded

TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 

Recently uploaded (9)

TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

Mauticをリバースプロキシの下で使うときに気をつけること