俺、サービス売って家買うんだ

Swift, Kotlin, Vue.js, 統計, GCP / このペースで作ってればいつか2-3億で売れるのがポっと出来るんじゃなかろうか

Nginx を SEO 仕様に設定する 7 の寝技

こんにちは。ハヤトです。
SEOといえば、ユーザーに有益なコンテンツを作って、シェアしてもらい、ソーシャルからのリンクを獲得して、なんて感じのホワイトハットな感じが思い浮かびますね。

しかーし!信頼性や速度など、サイトの品質が大事であることは Google も度々言及しているように、システム側でするべきこともたくさんあります。
今回は Nginx で SEO 対策をする設定についてまとめていきます。

f:id:hayato1986:20110727111213j:plain

1. Apache から Nginx へ

目的: スピードアップ
いきなりwww ッて感じですが、まずはApacheからNginxへの移行がオススメです。
細かい比較や状況におけるパフォーマンスは面倒なので(そしてわからないので)割愛しますが、大体の場合はNginxのほうがやっぱり早いですよね。。
WordPress で動いているサイトなら30倍のパフォーマンスが出ることもあるらしいですよ。Nginx使っていきましょう!
余談ですが、心のなかでは「んじんえっくす」って呼んでます。

2. Gzipでファイルを圧縮する

目的: スピードアップ
Googleが提供するPageSpeed Insightでチェックするとよく出る「圧縮を有効にする」を修正するにも効果あります。ここらへんを参考にすると良いですが、自分の設定をさらっと載せておきます。

vi /etc/nginx/nginx.conf

でnginx.confを開いて、gzip を on にしましょう。

http {
        gzip on;
        gzip_disable "msie6";

        gzip_vary on;
        gzip_proxied any;
        gzip_comp_level 6;
        gzip_buffers 16 8k;
        gzip_min_length  1100;
        gzip_http_version 1.1;
        gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
}

gip_typesでどのテキストの種類を圧縮するか選べます。

3. ブラウザのキャッシュを活用する

目的: スピードアップ
こちらもPageSpeed Insight からですが、「ブラウザのキャッシュを活用する」のエラーがよく出ます。 参考はこちらがためになりますが、

vi /etc/nginx/sites-available/default

で開いて、一番下に下記を追加します。これでブラウザのキャッシュをNginxが使えるようになります。

location ~ .*\.(jpg|gif|png|css|js|ico|woff) {
    expires 10d;
}

4. IP と URL の Canonicalization を設定する

目的: セキュリティ
www.example.com や 直IP(162.33.21.53.hogeみたいなやつ) をリダイレクトで example.comに飛ばすようにしておくことで重複コンテンツとみなされなくなります。
ちょっと設定が色いろあるみたいなのですが僕は、

vi /etc/nginx/sites-available/default

で開いて「server_name」のところをいかに編集しています。下記の設定で「153.33.21.53」と「www.example.com」を、「example.com」に飛ばしています。

server {
    listen       80;
    server_name  153.33.21.53  www.example.com; 

if ($host !~* ^(www))
{
   rewrite ^/(.*)$ $scheme://example.com/$1 permanent;
}
}

5. Server Signature を設定する

目的: セキュリティ
なんでもセキュリティ的にserver_tokensをoffにしておいたほうがいいみたいです。どれくらい効果があるのか実感がわかないですが、こういうのはやれるだけやっといたほうがいいですよね(無責任ですいません)

vi /etc/nginx/nginx.conf

に下記を追加してください。

server_tokens off;

6. Libwww-perl のアクセスを拒否する

目的: セキュリティ
SEO CheckUp曰く、Libwww-perl からのアクセスを拒否しておくとSEO的に良いらしい。

vi /etc/nginx/sites-available/default

の中に、下記をコピペしましょう。

map $http_user_agent $limit_bots {
     default 0;
     ~*(google|bing|yandex|msnbot) 1;
~*(AltaVista|Googlebot|Slurp|BlackWidow|Bot|ChinaClaw|Custo|DISCo|Download|Demon|eCatch|EirGrabber|EmailSiphon|EmailWolf|SuperHTTP|Surfbot|WebWhacker) 1;
     ~*(Express|WebPictures|ExtractorPro|EyeNetIE|FlashGet|GetRight|GetWeb!|Go!Zilla|Go-Ahead-Got-It|GrabNet|Grafula|HMView|Go!Zilla|Go-Ahead-Got-It) 1;
~*(rafula|HMView|HTTrack|Stripper|Sucker|Indy|InterGET|Ninja|JetCar|Spider|larbin|LeechFTP|Downloader|tool|Navroad|NearSite|NetAnts|tAkeOut|WWWOFFLE) 1;
~*(GrabNet|NetSpider|Vampire|NetZIP|Octopus|Offline|PageGrabber|Foto|pavuk|pcBrowser|RealDownload|ReGet|SiteSnagger|SmartDownload|SuperBot|WebSpider) 1;
~*(Teleport|VoidEYE|Collector|WebAuto|WebCopier|WebFetch|WebGo|WebLeacher|WebReaper|WebSauger|eXtractor|Quester|WebStripper|WebZIP|Wget|Widow|Zeus) 1;
~*(Twengabot|htmlparser|libwww|Python|perl|urllib|scan|Curl|email|PycURL|Pyth|PyQ|WebCollector|WebCopy|webcraw) 1;
 }

if ($limit_bots = 1) {
              return 403;
            }

7. ディレクトリへのブラウズを拒否する

目的: セキュリティ
ファイルをダイレクトにブラウジングされるような設定じゃセキュリティ的にダメってことですよね。

vi /etc/nginx/sites-available/default

で下記を追加してください。

 autoindex on;

いかがでしたでしょうか。SEOの設定、ビジネスのチームに任せっきりになっていませんか?
エンジニアとビジネスが両方頑張ってこそSEOはうまくいくように思います。
サイトやサービスへの集客は一貫して全てのチームメンバーがコミットするべき課題ですね。

おまけ

僕が普段SEOをチェックするツールを下記においておきます。最低2つは使って相対的に評価していくのが良いのではないでしょうか。

PageSpeed Insight

おなじみGoogleが出してるサイト品質チェックツール。85点くらいいけばそれでOKです。
PageSpeed Insights

SEO siteCheckUp

SEOをあらゆる角度からチェックしてくれるサイト。項目が100もあるので、何かしら見落としているところが出てきます。
seositecheckup.com

Similar Web

みんな大好きSimilar Web。どちらかというと競合調査とかに使います。
www.similarweb.com

∧_∧  オラッオラッ
( ・ω・)=つ≡つ
(っ ≡つ=つ
/   ) ババババ
( / ̄∪