Chiroru's Diary

日々の学びをちょこちょこメモしていきます

Cookieとセッション、nginx基本の理解

【学習内容】

  • cookieの理解
  • nginx基本の理解

【目次】

cookieとは

HTTP COOKIES。webページを閲覧したユーザー情報を一時的に保存する仕組み、またそのデータのこと。
種類は Persistent Cookie(パーシステントクッキー)とSession Cookie(セッションクッキー)の2つ。
PWやメールアドレスなどがユーザー情報として保存され、再度同じページを開いた時にログインなどの情報入力する手間が省ける。
cookieは文字情報で、小さなテキストファイルと変わらない。 またcookieをつくったwebサイトだけがそれを読み込める仕組みのため、基本的には不正に盗まれることはない。

幾つかのページへのリンクを次々とクリックしたとき、サーバーは単にユーザの要求に応答するだけで、同一ユーザがこのリクエスト を送ってきたと言うことを認識していません。これは送られてきたデータリンクはWebページが配信されると直ちに閉じられるためです。このような通信手段を ステートレスプロトコルと呼び、その代表がHTTPでした。

HTTP/1.0になって各種のヘッダが定義されHTTP Cookieも付加されるようになります。HTTP Cookieは、Webサーバーからユーザのコンピュータに送られる情報の一部で、データ伝達の"HTTP Header"の中で送信され、Webブラウザ中に内部的に保存されます。
次に、この同じサーバーにアクセスしたとき、サーバーはHTTP Cookieを読み戻しユーザの認識(同定や認証)に利用します。

セッションクッキーは一時的な物に対し、パーシステントクッキーはそれより長い期間保存される。
セッションクッキーはサーバーへのセッションが終わった時点で(ブラウザ閉じたら)破棄される。
パーシステントクッキーはブラウザを閉じてもブラウザ内に保存されており、閉じたタイミングで破棄したければブラウザの設定をいじる。

cookieと似たキャッシュ

キャッシュは一度閲覧したwebページの情報を、一時的に保存すること。
再度同じページを開く時に保存されたデータ(キャッシュ)を利用して表示し、いちいちサーバーと通信する必要がなくなるため表示スピードも早くなる。

参考:初心者でもわかる『cookie(クッキー)』講座 危険性やスマホでの設定方法もズバリ解説

参考:Cookie(クッキー)の意味とは?キャッシュの違いと削除方法を解説

参考:クッキー(Cookie)について

セッション管理

まずセッションとは

通信の開始から終了まで。クライアントとサーバーで通信を行う場合であれば、クライアントからサーバーへ接続した時点でセッションが始まり、サーバーから切断するとセッションが終了。

セッション管理は、cookieを利用する。

1. クライアントはWebサイトにログイン(PWなどをサーバに送信)
2. サーバはセッションIDを生成してCookieに載せてクライアントに返す
3. 以降クライアントはCookieにセッションIDを載せてリクエストする
→セッションの維持ができるようになる

参考:意外と知らない?ITトレンド用語
参考:Cookieとセッション管理

nginx

リバースプロキシの機能を持ったWebサーバー。
リバースプロキシについては以下。

特定のサーバへのリクエストが必ず通過するように設置されたプロキシサーバである。不特定多数のクライアントのアクセスに備えて特定のサーバー専用に設けられる。
またリバースプロキシは、不特定多数のクライアントに対するアクセス制限や、サーバーの負荷分散のために用意される。

### Webアプリケーションとの連携
Webアプリケーションをサーバ自体に組み込んで動作させることはできないため、FastCGIやSCGIなどに対応したアプリケーションサーバ上で動作させて、ネットワークやUNIXドメインソケットを経由して利用する。

nginxインストール

VPSDebianでnginxインストールした。
手順の参考はこちら

$ wget "http://nginx.org/keys/nginx_signing.key"   
$ sudo apt-key add nginx_signing.key    
# 最新バージョンを入手するためapt-getでなくパッケージの公開鍵をダウンロード、apt-keyで追加  


#この時apt公開鍵の追加による以下のエラーが出たら、gnupgがインストールされていないせい  
# gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operatio  

$ sudo apt install gnupg  
# 上記でgnupgインストール  


$ sudo vim /etc/apt/sources.list  
# nginxのサイトをリポジトリに追加。以下を記載する  

deb http://nginx.org/packages/debian/ squeeze nginx  
deb-src http://nginx.org/packages/debian/ squeeze nginx  

$ sudo apt-get update  
$ sudo apt-get install nginx  
# 登録反映後、最新バージョンをインストール  

上記を行い、ブラウザでアクセスして「Welcome to nginx!」で表示されればOK なおnginxの起動と終了は以下。

$ sudo service nginx start  
# 起動  

$ nginx -s stop  
# 停止  

HTMLをブラウザで配信

Nginx の設定ファイルである/etc/nginx/nginx.confを確認。
その中に読み込みを行なってるincludeに着目する。

include /etc/nginx/conf.d/*.conf;  

この中にあった/etc/nginx/conf.d/default.confを確認。
その中のrootに着目。

root   /usr/share/nginx/html;

これ以下に表示させたいhtmlファイルを置けば良い。
(確認したければ/usr/share/nginx/htmlのなかで「Welcome to nginx!」があるか見れば良い)

※/usr/shareディレクトリは、主にドキュメント関係が置かれていることが多いからここに入ってていいのかしら…?(/var/www/html/が普通だと思われる…)

HTMLを作成して、http://サーバー名/index.nginxsample.htmlでブラウザ確認、以上。
※さくらVPSの場合、サーバー名は「標準ホスト名」

参考:aptの公開鍵の追加でエラー