CentOS 7インストールメンテナンスNginx

25698 ワード

Nginxインストール
ここで修正を更新し続けます
Nginxは性能設計向けのHTTPサーバで、HTTP、HTTPSとメール関連(SMTP、POP 3、IMAP)のプロトコルリンクを逆エージェントできる.また、負荷分散およびHTTPキャッシュを提供します.その設計は非同期イベントモデルを十分に使用し、コンテキストスケジューリングのオーバーヘッドを削減し、サーバの同時能力を向上させる.モジュール化設計を採用し、豊富なモジュールのサードパーティモジュールを提供しています.
だからNginxについては、「非同期」「イベント」「モジュール化」「高性能」「高同時」「逆エージェント」「負荷等化」というラベルがあります.
Linuxシステム:Centos 7 x64 Nginxバージョン:1.11.5インストール
インストール依存
prce(リダイレクトサポート)とopenssl(httpsサポート、httpsを必要としない場合はインストールしないことができます.)
yum -y install pcre*
yum -y install openssl*
CentOS 6.5インストール時に選択した「基本サーバー」ですが、デフォルトでは両方のパッケージがインストールされていないので、両方ともインストールを実行すればいいです.
ダウンロード
wget http://nginx.org/download/nginx-1.11.5.tar.gz

#       wget
#        
$ yum install wget
コンパイル
次にディレクトリコンパイルインストールに入り、configureパラメータの説明
cd nginx-1.11.5
./configure
インストールエラーの場合は「C compiler cc is not found」など、コンパイル環境が欠けているのでインストールすればよいyum-y install gcc make gcc-c++openssl-devel wget
error情報がなければ、次のインストールを実行できます.
make
make install
nginxテスト
次のコマンドを実行すると、2つの結果が表示されます.
./nginx -t

# nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
# nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
起動してから起動します
vi/lib/systemd/systemm/nginx.serviceファイルを編集し、touch nginx.serviceを作成せずに次の内容を状況に応じて変更してnginx.serviceファイルに追加します.
[Unit]
Description=nginx1.11.5
After=network.target remote-fs.target nss-lookup.target

[Service]

Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
設定を有効にするには、起動を設定します.
systemctl enable nginx.service
運行維持
サービス管理
#   
/usr/local/nginx/sbin/nginx

#   
/usr/local/nginx/sbin/nginx -s reload

#     
/usr/local/nginx/sbin/nginx -s stop

#     nginx
/usr/local/nginx/sbin/nginx -s quit

#   nginx     ,
/usr/local/nginx/sbin/nginx -V 
ファイアウォールを閉じるか、ファイアウォールルールを追加すればテストできます.
service iptables stop
または、プロファイルを編集します.
vi /etc/sysconfig/iptables
オープン80ポートのルールを追加して保存します.
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
サービスを再起動します.
service iptables restart
サービスの再起動ファイアウォールエラーの解決
service iptables restart
# Redirecting to /bin/systemctl restart  iptables.service
# Failed to restart iptables.service: Unit iptables.service failed to load: No such file or directory.
CentOS 7またはRHEL 7またはFedoraでは、ファイアウォールはfirewalldによって管理されています.もちろん、従来の管理方法を復元することができます.または、新しいコマンドを使用して管理します.従来の場合は、次のコマンドを実行します.
#     
systemctl stop firewalld
systemctl mask firewalld
#     
yum install iptables-services

systemctl enable iptables 
service iptables restart
nginxアンインストール
yumでインストールする場合は、次のコマンドを使用してインストールします.
yum remove nginx
インストールをコンパイルし、/usr/local/nginxディレクトリを削除すれば、自己起動スクリプトが構成されている場合でも削除する必要があります.
パラメータの説明
パラメータ
説明
--prefix=
Nginxインストールパス.指定されていない場合は、デフォルトは/usr/local/nginxです.
--sbin-path=
Nginxはファイルインストールパスを実行できます.インストール時のみ指定、指定なしでデフォルトが /sbin/nginx。 --conf-path= 在没有给定-c选项下默认的nginx.conf的路径。如果没有指定,默认为/conf/nginx.conf。 --pid-path= 在nginx.conf中没有指定pid指令的情况下,默认的nginx.pid的路径。如果没有指定,默认为 /logs/nginx.pid。 --lock-path= nginx.lock文件的路径。 --error-log-path= 在nginx.conf中没有指定error_log指令的情况下,默认的错误日志的路径。如果没有指定,默认为 /- logs/error.log。 --http-log-path= 在nginx.conf中没有指定access_log指令的情况下,默认的访问日志的路径。如果没有指定,默认为 /- logs/access.log。 --user= 在nginx.conf中没有指定user指令的情况下,默认的nginx使用的用户。如果没有指定,默认为 nobody。 --group= 在nginx.conf中没有指定user指令的情况下,默认的nginx使用的组。如果没有指定,默认为 nobody。 --builddir=DIR 指定编译的目录 --with-rtsig_module 启用 rtsig 模块 --with-select_module --without-select_module 允许或不允许开启SELECT模式,如果 configure 没有找到更合适的模式,比如:kqueue(sun os),epoll (linux kenel 2.6+), rtsig(- 实时信号)或者/dev/poll(一种类似select的模式,底层实现与SELECT基本相 同,都是采用轮训方法) SELECT模式将是默认安装模式 --with-poll_module --without-poll_module Whether or not to enable the poll module. This module is enabled by, default if a more suitable method such as kqueue, epoll, rtsig or /dev/poll is not discovered by configure. --with-http_ssl_module Enable ngx_http_ssl_module. Enables SSL support and the ability to handle HTTPS requests. Requires OpenSSL. On Debian, this is libssl-dev. 开启HTTP SSL模块,使NGINX可以支持HTTPS请求。这个模块需要已经安装了OPENSSL,在DEBIAN上是libssl --with-http_realip_module 启用 ngx_http_realip_module --with-http_addition_module 启用 ngx_http_addition_module --with-http_sub_module 启用 ngx_http_sub_module --with-http_dav_module 启用 ngx_http_dav_module --with-http_flv_module 启用 ngx_http_flv_module --with-http_stub_status_module 启用 "server status" 页 --without-http_charset_module 禁用 ngx_http_charset_module --without-http_gzip_module 禁用 ngx_http_gzip_module. 如果启用,需要 zlib 。 --without-http_ssi_module 禁用 ngx_http_ssi_module --without-http_userid_module 禁用 ngx_http_userid_module --without-http_access_module 禁用 ngx_http_access_module --without-http_auth_basic_module 禁用 ngx_http_auth_basic_module --without-http_autoindex_module 禁用 ngx_http_autoindex_module --without-http_geo_module 禁用 ngx_http_geo_module --without-http_map_module 禁用 ngx_http_map_module --without-http_referer_module 禁用 ngx_http_referer_module --without-http_rewrite_module 禁用 ngx_http_rewrite_module. 如果启用需要 PCRE 。 --without-http_proxy_module 禁用 ngx_http_proxy_module --without-http_fastcgi_module 禁用 ngx_http_fastcgi_module --without-http_memcached_module 禁用 ngx_http_memcached_module --without-http_limit_zone_module 禁用 ngx_http_limit_zone_module --without-http_empty_gif_module 禁用 ngx_http_empty_gif_module --without-http_browser_module 禁用 ngx_http_browser_module --without-http_upstream_ip_hash_module 禁用 ngx_http_upstream_ip_hash_module --with-http_perl_module 启用 ngx_http_perl_module --with-perl_modules_path=PATH 指定 perl 模块的路径 --with-perl=PATH 指定 perl 执行文件的路径 --http-log-path=PATH Set path to the http access log --http-client-body-temp-path=PATH Set path to the http client request body temporary files --http-proxy-temp-path=PATH Set path to the http proxy temporary files --http-fastcgi-temp-path=PATH Set path to the http fastcgi temporary files --without-http 禁用 HTTP server --with-mail 启用 IMAP4/POP3/SMTP 代理模块 --with-mail_ssl_module 启用 ngx_mail_ssl_module --with-cc=PATH 指定 C 编译器的路径 --with-cpp=PATH 指定 C 预处理器的路径 --with-cc-opt=OPTIONS Additional parameters which will be added to the variable CFLAGS. With the use of the system library PCRE in FreeBSD, it is necessary to indicate --with-cc-opt="-I /usr/local/include". If we are using select() and it is necessary to increase the number of file descriptors, then this also can be assigned here: --with-cc-opt="-D FD_SETSIZE=2048". --with-ld-opt=OPTIONS Additional parameters passed to the linker. With the use of the system library PCRE in - FreeBSD, it is necessary to indicate --with-ld-opt="-L /usr/local/lib". --with-cpu-opt=CPU 为特定的 CPU 编译,有效的值包括:pentium, pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64 --without-pcre 禁止 PCRE 库的使用。同时也会禁止 HTTP rewrite 模块。在 "location" 配置指令中的正则表达式也需要 PCRE 。 --with-pcre=DIR 指定 PCRE 库的源代码的路径。 --with-pcre-opt=OPTIONS Set additional options for PCRE building. --with-md5=DIR Set path to md5 library sources. --with-md5-opt=OPTIONS Set additional options for md5 building. --with-md5-asm Use md5 assembler sources. --with-sha1=DIR Set path to sha1 library sources. --with-sha1-opt=OPTIONS Set additional options for sha1 building. --with-sha1-asm Use sha1 assembler sources. --with-zlib=DIR Set path to zlib library sources. --with-zlib-opt=OPTIONS Set additional options for zlib building. --with-zlib-asm=CPU Use zlib assembler sources optimized for specified CPU, valid values are: pentium, pentiumpro --with-openssl=DIR Set path to OpenSSL library sources --with-openssl-opt=OPTIONS Set additional options for OpenSSL building --with-debug 启用调试日志 --add-module=PATH Add in a third-party module found in directory PATH

配置

在Centos 默认配置文件在 /usr/local/nginx-1.5.1/conf/nginx.conf 我们要在这里配置一些文件。nginx.conf是主配置文件,由若干个部分组成,每个大括号{}表示一个部分。每一行指令都由分号结束;,标志着一行的结束。

配置文件

nginx 的配置系统由一个主配置文件和其他一些辅助的配置文件构成。这些配置文件均是纯文本文件,全部位于 nginx 安装目录下的 conf 目录下。

指令由 nginx 的各个模块提供,不同的模块会提供不同的指令来实现配置。
指令除了 Key-Value 的形式,还有作用域指令。

nginx.conf 中的配置信息,根据其逻辑上的意义,对它们进行了分类,也就是分成了多个作用域,或者称之为配置指令上下文。不同的作用域含有一个或者多个配置项。

下面的这些上下文指令是用的比较多:

Directive Description Contains Directive
main nginx 在运行时与具体业务功能(比如 http 服务或者 email 服务代理)无关的一些参数,比如工作进程数,运行的身份等。 user, worker_processes, error_log, events, http, mail
http 与提供 http 服务相关的一些配置参数。例如:是否使用 keepalive 啊,是否使用 gzip 进行压缩等。 server
server http 服务上支持若干虚拟主机。每个虚拟主机一个对应的 server 配置项,配置项里面包含该虚拟主机相关的配置。在提供 mail 服务的代理时,也可以建立若干 server. 每个 server 通过监听的地址来区分。 listen, server_name, access_log, location, protocol, proxy, smtp_auth, xclient
location http 服务中,某些特定的 URL 对应的一系列配置项。 index, root
mail 实现 email 相关的 SMTP/IMAP/POP3 代理时,共享的一些配置项(因为可能实现多个代理,工作在多个监听地址上)。 server, http, imap_capabilities
include 以便增强配置文件的可读性,使得部分配置文件可以重新使用。 -
valid_referers 用来校验Http请求头Referer是否有效。 -
try_files 用在server部分,不过最常见的还是用在location部分,它会按照给定的参数顺序进行尝试,第一个被匹配到的将会被使用。 -
if 当在location块中使用if指令,在某些情况下它并不按照预期运行,一般来说避免使用if指令。 -

例如我们再 nginx.conf 里面引用两个配置 vhost/example.com.conf 和 vhost/gitlab.com.conf 它们都被放在一个我自己新建的目录 vhost 下面。nginx.conf 配置如下:

worker_processes  1;
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    include  vhost/example.com.conf;
    include  vhost/gitlab.com.conf;
}

简单的配置: example.com.conf

server {
    #   80  
    listen       80;
    server_name  baidu.com app.baidu.com; #       
    index        index.html index.htm;    #           
    root /home/www/app.baidu.com;         #       
}

内置预定义变量

Nginx提供了许多预定义的变量,也可以通过使用set来设置变量。你可以在if中使用预定义变量,也可以将它们传递给代理服务器。以下是一些常见的预定义变量,更多详见

变量名称
$args_name 在请求中的name参数
$args 所有请求参数
$query_string $args的别名
$content_length 请求头Content-Length的值
$content_type 请求头Content-Type的值
$host 如果当前有Host,则为请求头Host的值;如果没有这个头,那么该值等于匹配该请求的server_name的值
$remote_addr 客户端的IP地址
$request 完整的请求,从客户端收到,包括Http请求方法、URI、Http协议、头、请求体
$request_uri 完整请求的URI,从客户端来的请求,包括参数
$scheme 当前请求的协议
$uri 当前请求的标准化URI

反向代理

反向代理是一个Web服务器,它接受客户端的连接请求,然后将请求转发给上游服务器,并将从服务器得到的结果返回给连接的客户端。下面简单的反向代理的例子:

server {  
    listen       80;                                                        
    server_name  localhost;                                              
    client_max_body_size 1024M;  #                 

    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host:$server_port;
    }
}

复杂的配置: gitlab.com.conf。

server {
    #   80  
    listen       80;
    server_name  git.example.cn;
    location / {
        proxy_pass   http://localhost:3000;
        #               
        proxy_redirect             off;
        #   Web       X-Forwarded-For      IP
        proxy_set_header           Host $host;
        client_max_body_size       10m; #                
        client_body_buffer_size    128k; #                  
        proxy_connect_timeout      300; #nginx            (      )
        proxy_send_timeout         300; #           (      )
        proxy_read_timeout         300; #     ,         (      )
        proxy_buffer_size          4k; #       (nginx)             
        proxy_buffers              4 32k; #proxy_buffers   ,     32k    ,    
        proxy_busy_buffers_size    64k; #        (proxy_buffers*2)
    }
}

代理到上游服务器的配置中,最重要的是proxy_pass指令。以下是代理模块中的一些常用指令:

指令 说明
proxy_connect_timeout Nginx从接受请求至连接到上游服务器的最长等待时间
proxy_send_timeout 后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 连接成功后,后端服务器响应时间(代理接收超时)
proxy_cookie_domain 替代从上游服务器来的Set-Cookie头的domain属性
proxy_cookie_path 替代从上游服务器来的Set-Cookie头的path属性
proxy_buffer_size 设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers proxy_buffers缓冲区,网页平均在多少k以下
proxy_set_header 重写发送到上游服务器头的内容,也可以通过将某个头部的值设置为空字符串,而不发送某个头部的方法实现
proxy_ignore_headers 这个指令禁止处理来自代理服务器的应答。
proxy_intercept_errors 使nginx阻止HTTP应答代码为400或者更高的应答。

负载均衡

upstream指令启用一个新的配置区段,在该区段定义一组上游服务器。这些服务器可能被设置不同的权重,也可能出于对服务器进行维护,标记为down。

upstream  gitlab {
    ip_hash;
    server 192.168.122.11:8081 ;
    server 127.0.0.1:3000;
    server 127.0.0.1:3001 down;
    keepalive 32;
}
server {
    #   80  
    listen       80;
    server_name  git.example.cn;
    location / {
        proxy_pass   http://gitlab;    #         , upstream     
        #               
        proxy_redirect             off;
        #   Web       X-Forwarded-For      IP
        proxy_set_header           Host $host;
        proxy_set_header           X-Real-IP $remote_addr;
        proxy_set_header           X-Forwarded-For $proxy_add_x_forwarded_for;
        client_max_body_size       10m;  #                
        client_body_buffer_size    128k; #                  
        proxy_connect_timeout      300;  #nginx            (      )
        proxy_send_timeout         300;  #           (      )
        proxy_read_timeout         300;  #     ,         (      )
        proxy_buffer_size          4k; #       (nginx)             
        proxy_buffers              4 32k;#    ,     32k    ,    
        proxy_busy_buffers_size    64k; #        (proxy_buffers*2)
        proxy_temp_file_write_size 64k; #         ,     ,  upstream    
    }
}

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

负载均衡:

upstream模块能够使用3种负载均衡算法:轮询、IP哈希、最少连接数。

轮询: 默认情况下使用轮询算法,不需要配置指令来激活它,它是基于在队列中谁是下一个的原理确保访问均匀地分布到每个上游服务器;
IP哈希: 通过ip_hash指令来激活,Nginx通过IPv4地址的前3个字节或者整个IPv6地址作为哈希键来实现,同一个IP地址总是能被映射到同一个上游服务器;
最少连接数: 通过least_conn指令来激活,该算法通过选择一个活跃数最少的上游服务器进行连接。如果上游服务器处理能力不同,可以通过给server配置weight权重来说明,该算法将考虑到不同服务器的加权最少连接数。

RR

简单配置 ,这里我配置了2台服务器,当然实际上是一台,只是端口不一样而已,而8081的服务器是不存在的,也就是说访问不到,但是我们访问 http://localhostの場合は問題なく、デフォルトでhttp://localhost:8080にジャンプします具体的にはNginxが自動的にサーバーの状態を判断するので、サーバーがアクセスできない(サーバーが掛かっている)場合は、このサーバーにジャンプすることはありませんので、1台のサーバーが掛かって使用に影響を与えることも避けられます.NginxのデフォルトはRRポリシーなので、他の設定は必要ありません.

upstream test {
    server localhost:8080;
    server localhost:8081;
}
server {
    listen       81;                                                        
    server_name  localhost;                                              
    client_max_body_size 1024M;
 
    location / {
        proxy_pass http://test;
        proxy_set_header Host $host:$server_port;
    }
}
負荷等化のコアコードは
upstream test {
    server localhost:8080;
    server localhost:8081;
}
ウェイト(Weight)
ポーリングの確率を指定し、weightとアクセス比率に比例してバックエンドサーバのパフォーマンスが不均一な場合に使用します.たとえば
upstream test {
    server localhost:8080 weight=9;
    server localhost:8081 weight=1;
}
では、10回で8081に1回しかアクセスできませんが、9回で8080にアクセスします.
ip_hash
上の2つの方法には、次のリクエストが来たときにリクエストが別のサーバに配布される可能性があるという問題があります.私たちのプログラムが無状態ではない場合(sessionでデータを保存しています)、ログイン情報をsessionに保存するなど、大きな問題があります.では、別のサーバにジャンプするときに再ログインする必要があるため、多くの場合、1人のクライアントが1つのサーバにアクセスするだけで、iphashを使用する必要があります.iphashの各要求はipにアクセスするhashの結果によって割り当てられ、このように各訪問者が1つのバックエンドサーバに固定的にアクセスすることで、sessionの問題を解決することができます.
upstream test {
    ip_hash;
    server localhost:8080;
    server localhost:8081;
}
fair
これはサードパーティモジュールで、バックエンドサーバの応答時間に応じてリクエストを割り当て、応答時間の短い優先割り当てです.
upstream backend {
    fair;
    server localhost:8080;
    server localhost:8081;
}
url_hash
これはサードパーティモジュールで、urlにアクセスしたhash結果に基づいてリクエストを割り当て、各urlを同じバックエンドサーバに指向させ、バックエンドサーバがキャッシュの場合に有効にします.upstreamにhash文を入れ、server文にweightなど他のパラメータを書き込むことはできません.hash_methodはhashアルゴリズムを使用しています
upstream backend {
    hash $request_uri;
    hash_method crc32;
    server localhost:8080;
    server localhost:8081;
}
以上の5種類のロードバランシングはそれぞれ異なる場合に適用されるので、実際の状況に応じてどのポリシーモードを使用するかを選択できますがfairとurl_hashはサードパーティモジュールをインストールして使用する必要があります
server命令オプションパラメータ:
  • weight:1つのサーバのアクセス重みを設定し、数値が高いほど、受信したリクエストも多くなります.
  • fail_timeout:この指定された時間内にサーバは応答を提供する必要があります.この時間内に応答が受信されない場合、サーバはdown状態としてマークされます.
  • max_fails:fail_に設定timeout時間内に1つのサーバに接続しようとした最大回数が、この回数を超えると、サーバはdownとマークされます.
  • down:1つのサーバが要求を受け入れなくなったことをマークします.
  • backup:他のサーバがダウンタイムすると、マークされたマシンがリクエストを受信します.

  • keepalive命令:
    Nginxサーバは、各workerに対して上流サーバとの接続を維持します.
    サードパーティモジュールの取り付け方法
    ./configure --prefix=/        --add-module=/       
    一般的な使用シーン
    ドメイン間問題
    作業中、ドメイン間でサポートされていないインタフェースがある場合があります.add_を簡単に追加できます.headersはcorsドメイン間でサポートします.次のように構成されています.
    server {
      listen 80;
      server_name api.xxx.com;
        
      add_header 'Access-Control-Allow-Origin' '*';
      add_header 'Access-Control-Allow-Credentials' 'true';
      add_header 'Access-Control-Allow-Methods' 'GET,POST,HEAD';
    
      location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host  $http_host;    
      } 
    }
    ヘッダ情報を変更したり、rewriteコマンドを使用してURIにリダイレクトしたりして、ドメイン間の問題を解決したりします.
    upstream test {
      server 127.0.0.1:8080;
      server localhost:8081;
    }
    server {
      listen 80;
      server_name api.xxx.com;
      location /{ 
        root  html;                   #   ../html       
        index  index.html index.htm;  #      
      }
      #       ,      /api/     ,
      #       ,        。
      location ^~/api/{ 
        #            ,                         ,
        #   www.a.com/proxy/api/msg?meth=1&par=2  ,  /proxy/api/msg  。
        # rewrite              ^/api/(.*)$,
        # $1         (),$2     ()  ,    。
        rewrite ^/api/(.*)$ /$1 break;
        
        #            
        #    http://www.b.com/     http://www.b.com       
        #            http://server/html/test.jsp
        #    : http://www.b.com/    “/” 
        #                http://www.b.com/html/test.jsp   
        #    : http://www.b.com      “/” 
        #                http://www.b.com/test.jsp   
        proxy_pass http://test;
      } 
    }
    ssl構成
    ハイパーテキスト転送セキュリティプロトコル(略称:HTTPS、英語:Hypertext Transfer Protocol Secure)は、ハイパーテキスト転送プロトコルとSSL/TLSの組み合わせであり、暗号化通信およびネットワークサーバの識別を提供する.HTTPS接続は、万次元ネットワーク上の取引支払いや企業情報システムにおける機密情報の伝送によく用いられる.HTTPSは、RFC 2660において定義された安全なハイパーテキスト伝送プロトコル(S−HTTP)と混在してはならない.
    HTTPSは現在、プライバシーと安全を重視するすべてのサイトの第一選択であり、技術の発展に伴い、HTTPSサイトはすでに大型サイトの特許ではなく、すべての普通の個人駅長とブログは自分で安全な暗号化サイトを構築することができる.
    現在のnginxコンパイルオプションの表示
    sbin/nginx -V
    次の内容を出力
    nginx version: nginx/1.7.8
    built by gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)
    TLS SNI support enabled
    configure arguments: --prefix=/usr/local/nginx-1.5.1 --with-http_ssl_module --with-http_spdy_module --with-http_stub_status_module --with-pcre
    依存するモジュールが存在しない場合は、次のコマンドを入力してインストールを再コンパイルできます.
    ./configure --user=www --group=www --prefix=/mt/server/nginx --with-http_stub_status_module --with-openssl=/home/nginx-1.8.0/openssl-1.0.0d --without-http-cache --with-http_ssl_module --with-http_gzip_static_module --with-...
    HTTPS server
    server {
        listen       443 ssl;
        server_name  localhost;
    
        ssl_certificate /usr/local/nginx/conf/vjjhd.crt;
        ssl_certificate_key /usr/local/nginx/conf/vjjhd.key;
    
        #   ssl/tls          。            shared,buildin         ,   none, off   ,    。 shared:SSL:10m      nginx      ssl    ,     1M     4000 sessions。 
        ssl_session_cache    shared:SSL:1m; 
    
        #             ssl       ,      5     ,    30m 30    4h。
        ssl_session_timeout  5m; 
        
        #       ,            (   )     。
        #       OpenSSL        ,      openssl -v cipher 'RC4:HIGH:!aNULL:!MD5'(              )        。
        ssl_ciphers  HIGH:!aNULL:!MD5;
    
        #          ,              ,              。
        ssl_prefer_server_ciphers  on;
    
        location / {
            root   html;
            index  index.html index.htm;
        }
    }