このブログを検索

ラベル WEB の投稿を表示しています。 すべての投稿を表示
ラベル WEB の投稿を表示しています。 すべての投稿を表示

2014/11/24

nginxでリバースプロキシ設定

さくらのvpsを2台借りた。

1台目はcentosでapacheが動いている。

2台目をリバースプロキシにして、今まで1台目にアクセスするときに使用していたURLに
クライアントがアクセスすると、2台目がリクエストを1台目に転送するようにする。

別にそうする必要性はなにもないのだが、ちょっとやってみたかっただけ。



まず、DNSに登録している既存のAレコードを、新しいサーバのIPアドレスに変更する。

<今まで>
www.example.com    123.xx.xx.100

<変更後>
www.example.com    123.xx.xx.200 ※2台目
www2.example.com   123.xx.xx.100 ※1台目



2台目はubuntuをインストールし、httpdはnginxにする。

これも必要性は別になく、違うものを使ってみたかっただけ。



ubuntuをインストールしたばかりなので、

sudo apt-get update

をする。

sudo apt-get upgrade

もする。

これらの必要性もいまいちよくわからないが、一応やっておく。


nginxをインストールする。

sudo apt-get install nginx


firewallを設定する。

sudo ufw allow http



クライアントから www.example.com にアクセスしてみる。

nginxのテストページが表示される。



リバースプロキシの設定の仕方は、検索するとたくさん出てくるが、
設定をどこに書くかが人によって違う。

いろいろ試したが、/etc/nginx/nginx.conf に書いたら動いた。

sudo vi /etc/nginx/nginx.conf


http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
    ...............
}


"http"のところに、下記の内容を追加する。


## reverse proxy
        server {
                server_name     www.example.com;
                location / {
                        proxy_pass http://123.xx.xx.100; ※転送先のWEBサーバのIPアドレス
                }
        }



これでとりあえず、動く。

ほかにもいろいろ設定したほうがよいところなどがあるようだが、
とりあえず下記の2行を追加した。


## reverse proxy
        server {
                server_name     www.example.com;
                location / {
                        proxy_pass http://123.xx.xx.100;
                }
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ※1
                proxy_set_header X-Forwarded-Host $host; ※2
        }
}


これらがないと、転送先のサーバのアクセスログで、アクセス元が全部リバースプロキシになってしまう。


私のWEBサイトには、アクセス者のIPアドレスとホスト名を表示するページがあるのだが、
そこが全部リバースプロキシサーバのIPアドレスとホスト名になってしまう。


※1だけいれれば変わると思ったが、変わらず、
※2をいれてようやく変わった。

※2だけでいいのかと試したらダメで、どうも両方必要なようだ。


nginxの設定を確認したいときは 
$ sudo /etc/nginx$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

サービスの再起動
$ sudo service nginx restart





2014/02/08

アクセス解析



f:id:woniu:20140208185656p:image


私が持っているウェブサイトのアクセスログを解析してみた。
サーチエンジン、ブラウザ、OS、ドメインを集計し、3ヵ月ごとのシェアの推移を見た。

サーチエンジンについてはgoogleが6~7割、yahooが3割でほとんど変わらない。

browserについては、Firefoxがやや減少の傾向とiOSのSafariの増加傾向が見られる。

OSはずっとWindows7がトップだが、iPhoneが確実に増加している。ドコモ効果か。
WindowsXPは明らかな減少傾向が見られる。
Windows8の利用者はなかなか増えない。
androidは横ばい。

ドメイン名には特筆するような変化は見られない。
home.ne.jpが最近増えているという結果になっているが、
たぶんこれは自分自身のアクセスではないか・・・。


この結果から典型的なユーザは、
「モバイルはauのiPhone、パソコンはWindows7でブラウザがChrome、検索はGoogle」
という感じだ。




2012/12/20

2ちゃんねるでスクレイピングが失敗する

さくらのVPSサーバから、あるサイトにアクセスし、そのWEBサイトの情報の一部を取り出すという事をしている。いわゆる「スクレイピング」である。 

最初はperlで、LWP::Useragentなどを使って、あるサイトの情報を取り、あとは正規表現などを使って試行錯誤しつつ欲しい情報のみを取り出した。 特に難しいことはない。

ところが、同じ事を2ちゃんねるでやってみたら、うまくいかない。やろうとしたのは、ニュース速報の上位のスレッドタイトルを取得することだった。 2ちゃんねるは掲示板のメニューがあってそこに各掲示板のURLが記載されている。そしてその掲示板のURLはかなり頻繁に変更されるので、そのときアクセスできているURLに固定でアクセスせずに、メニューからURLを取得しなければならない。 その、メニューからURLを取得することはできたのだが、そこから取得したURLへアクセスすると、どうしてもHTMLの内容が取得できないのだ。

まずは、「302 Found」というエラーになる。これはリダイレクトされたときに出るもののようで、あるところで

push @{ $ua->requests_redirectable }, 'POST';
をやればいいという情報を見つけたのでやってみたら、今度は「ボボンハウス」のページが表示されてしまう。

同じperlスクリプトをローカルPCで動かしても同じ状況になる。 もちろん、ブラウザやギコナビなどでは問題なくアクセスできている。 昨日はここまでやって、あきらめて寝た。 

そして今日、perlのスクリプトでアクセスしたときと、ブラウザでアクセスしたときのパケットをwiresharkでキャプチャして比較してみた。

すると、GETしているときに、・・・・ と、ここまで書いてuseragentが違うことに気づいた。 perlで書いたものは何も設定しておらず、lwpの初期値が入っている。 これを'Mozilla'に変えたら・・・いけた。

昨日、変えてダメだったような記憶があったんだけどな・・・ ま、いいや。 これだけでいけるようになるということは、2ちゃんねるの「スクリプトキディ」除けかな。

今日はWEBでphpをつかったスクレイピング例を見つけてそれがうまく動いたのでそれをいじっていた。

しかし今度はphpの動作で不可解なところがでてきた。 まず、phpをcgiとして動かすために必要な設定がなんなのか。 いろいろと情報があるのだが、皆条件付でスパっと「ここをこうする!」という情報がない。

これも試行錯誤で試して、なんとかうごいた。 前回はこんなに苦労した記憶はないのに・・・。 さらに、いちおう動いたのだが、出力する内容が全部そのまま出てしまう。 htmlのリンクとかを書いても、そのまま表示されてリンクにならないのだ? なんでだ? 

話は変わるが、正規表現であるパターンにマッチする文字列が複数あり、それをすべて取り出したいときにはどうすればいいのだろう? たとえば、今まさにやりたかったのは、httpでgetしたデータの中にあるリンク(a href) を全部取り出して配列に格納する、というようなケースだ。 パッと思いつかず、サラっと探しても見つからなかったので、a hrefの前で改行してファイルに吐き出し、そのファイルを読んで一行ずつ処理するというメンドクサイことをしている。 こんなことしなくてもできるよね・・・。

2011/11/09

pre

またスタイルの話であるが、preを使っていると、iPhoneで表示が崩れる。

preにはソースを書くので1行の文字数がどうしても長くなる。 するとなぜかほかの部分の文字が大きくなってしまう。 preの幅にあわせて小さくなるならわかるのだが・・・ どうしよう・・・

2011/04/10

アクセスログ

さくらインターネットのレンタルサーバではwebalizerが使えるのだが、このログは午前0時に前日のログを作成するようになっている。「現在のログ」が見たくてさがしたのだがなかった。おそらく共用サーバなのでひとつにまとまっているのを分割しているのだと思う。そこでcgiでログをとることにした。環境変数をファイルにはくだけでよいので簡単である。flockという関数を、よくわからないが使ってみた。パースは厳密にやろうとすると大変なので、とりあえずそのまま書いて、検索語だけをデコードするようにした。




2009/10/31

職場で使うブラウザ

職場で使うブラウザをfirefoxにした。

理由はときどきwikipediaが開けずダウンロードのダイアログが表示されるからだ。

この現象はIE8+googleデスクトップ+igoogleにログインで起こるようなのだが、必ず起こるものでもないようである。

wikipediaは未知の何かについて検索したときにまず参照するので、これが見られないことは致命的なのでfirefoxにした。

が、netscapeの頃からずっと感じていたことなのだが、雰囲気がジジ臭いというか貧乏臭いというか、多分フォントのせいだと思うが、気持ち悪い。

フォントをいじってみたこともあるが、サイトによって見え方がさまざまで、どのサイトでも一番きれいに見えるのはやっぱりIEである。

マイクロソフトの製品というのは、非常にUIに気が配られているのが良いところだ。それが人によってはおせっかいだとかウザいとかダサいとか感じるのだろう。

2008/08/29

Windows Mail

IE8のベータ2とやらを入れてみた。いろいろと機能が追加されている。それにともなって、OutlookExpressのフォントが変わり、フォントサイズの設定が保存されなくなった。まあ、ベータだし、こんなこともあるだろう。

だが、ふと思ったのだが、どうしてMSはOutlookExpressをやめてWindows Mailとしたのだろう?Windows MailはVistaに入っているが、OEとほとんど何も変わっていない。OEの後継なんだとは思うのだが、XPではWindows Mailはサポートされていない。かといってOEがバージョンアップされる気配もない。なんか、MSはメールクライアントにやる気がみられない。

メールもWEBで送受信するようになると見ているのだろうか。

2008/07/30

メインフレーム時代へ戻った?

U先生が最近のなんでもWEBでやるコンピュータの使い方を、メインフレーム時代に戻ったんじゃないのと言っていたが、これはどうなんだろう?

たしかにそう見えるが、多分違う。でも、一体何が違うのかを説明できる人は少ないと思う。U先生のIT秘書さんも、説明できなかったのだ。

2008/07/22

ウィルスに感染したことがない

スラドで、「ウィルス対策ソフトいれてないけど感染したことない」という書き込みに対し、「なんで感染してないってわかるの」という揚げ足取りコメントがついた。

そう、これはあきらかに揚げ足取りな発言である。

たしかに、PCがダウンしたり、ヘンなスクリーンセーバーが動いたりといった動作をしなければ感染していないと言えるものではない。しかし、この人が言っているのは、実用に差し支えるようなウィルスの被害にあったことがない、ということなのは明らかであり、もしそうであるなら、感染していないのと同じなのである。

たとえば、その人のPCに何の影響もなく、どこかのアタックの踏み台にされるとか、どこにも何の形跡も残さずにその人のPCからSPAMを送信されたとか、こっそりマイピクチャの画像を見られたとか、そういうことがあり得ると言うのかも知れないが、それはあなたの家に合鍵を持った人が侵入して、何を盗んだかわからないくらいの微妙なものを盗んで、足跡も残さず、また鍵をしめて泥棒が出て行ったかもしれないよ、というのと同じくらいのありえなさである。

スラドには2ちゃんねるとは違った、こういうキツい、シャレのわからないのが多いね。

2008/01/21

2ちゃんねるは有料サイト

p2pや2ちゃんねるやsecondlifeをやり始めたのは、みんなカネがないからだった。

今月は前半に完全に飛ばしすぎてしまったので、bcをやっている。

そしたら2chはまた規制されている。

誰かが2chは無料で一部機能を試用できる有料サイトである、といっていたけど、確かにそうだな。

1年で三千円くらいだからたいした額じゃないんだけど、ポリシーとして絶対に2ちゃんねるにかかわる人間にカネを払うのは御免だ。

2ちゃんねるにおもしろい書き込みをしたら加担することになるかな。

まあそんなことはごく稀で、基本的には嫌な思いをしたりさせたりしている。まだ給料日は遠いな・・・。