Nginx从安装到虚拟主机、https加密、重定向的设置

一、Nginx的安装

[root@server1 ~]# wget http://nginx.org/download/nginx-1.10.1.tar.gz
[root@server1 ~]# tar  zxf  nginx-1.10.1.tar.gz

编译前的设置:
在源代码文件中把版本号注释掉,这是为了防止针对特定版本的恶意攻击

[root@server1 ~]# vim /root/nginx-1.10.1/src/core/nginx.h
#define NGINX_VER          "nginx" 

关闭编译时的调试模式

[root@server1 nginx-1.10.1]# vim  auto/cc/gcc 
# debug
#CFLAGS="$CFLAGS -g"

解决编译前的依赖性

[root@server1 nginx-1.10.1]#  yum install gcc pcre-devel openssl-devel -y

进行配置参数:

[root@server1 nginx-1.10.1]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio

对参数进行解读:

#--prefix=/usr/local/nginx指定安装路径

#--with-http_stub_status_module开启Nginx自带状态检测模块

#--with-http_ssl_module开启https模块,启动 SSL 的支持

#--with-file-aio 开启文件AIO支持

#--with-threads 启用线程池支持

编译和安装:

[root@server1 nginx-1.10.1]# make && make install

做软链接方便调用:

[root@server1 sbin]# ln -s  /usr/local/nginx/sbin/nginx   /sbin/

创建nginx用户

[root@server1 sbin]# useradd -M -d /usr/local/nginx/   nginx
[root@server1 sbin]# id nginx
uid=500(nginx) gid=500(nginx) groups=500(nginx)

二、nginx配置文件的解读

nginx配置文件主要分为4部分:
main(全局设置) main部分设置的指令将影响其他所有设置
server(主机设置)server部分的指令主要用于指定主机和端口
upstream(负载均衡服务器设置)upstream指令主要用于负载均衡,设置后端服务器
location(URL匹配特定位置的设置)部分用于匹配网页位置
server继承main,location继承server,upstream既不会继承其他设置也不会被继承

[root@server1 ~]# vim  /usr/local/nginx/conf/nginx.conf
user  nginx nginx;  ##主模块指令,定义Nginx运行的用户和用户组
worker_processes  1; ##主模块指令,设置nginx的进程数,建议设置为cpu核心数
#worker_cpu_affinity ##此参数设置进程数和CPU做绑定,有效利用资源
#默认是关闭的,可以自行开启,可以通过lscpu查看CPU的核数
#当cpu核心数为2,可以设置为01 10.
#当cpu核心数为4,可以设置为0001 0010  0100 1000.
#error_log  logs/error.log;  #主模块指令,用来定义全局错误日志文件
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid; 主模块指令,用来指定进程id的存储文件位置
# events指令用来设定nginx工作模式与连接数上限
events {
    use epoll; # use是个事件模块指令,用来指定nginx的工作模式
    #对于linux系统,epoll工作模式时首选
    worker_connections  65535;
    #事件模块指令,用于定义nginx每个进程的最大连接数默认是1024
    # 进程的最大连接数受linux系统的最大打开文件数限制,
    在执行操作系统命令“ulimit -n 65535”后worker_connections的设置才能生效
}
-------------------------以上为全局配置------------------------------
#设定http服务器
http {
    include       mime.types;
    ##实现对配置文件所包含的文件设定,可以减少主配置文件的复杂度
    default_type  application/octet-stream;
    ##在没有配置环境时,nginx是不予解析的,用浏览器访问就会出现下载窗口
    设置日至格式
    #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和tcp_nodely两个指令设置为on,用于防止网络阻塞。
    tcp_nopush     on;
    tcp_nodelay     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
   #客户端连接保持活动的超时时间,超过这个时间之后服务器会关闭该链接
    gzip on; #开启gzip压缩输出
    ----------------------以上是http模块设置-------------------
    #设定虚拟主机配置
    server {
        #侦听80端口
        listen    80;
        #定义使用 www.westos.org访问
        server_name  www.westos.org;

        #定义服务器的默认网站根目录位置
        root html;

        #设定本虚拟主机的访问日志
        access_log  logs/nginx.access.log  main;

        #默认请求
        location / {

            #定义首页索引文件的名称
            index  index.html index.htm;   

        }

        # 定义错误提示页面
        error_page   500 502 503 504 /50x.html;
        location = /50x.html {
        }

        #静态文件,nginx自己处理
        location ~ ^/(images|javascript|js|css|flash|media|static)/ {

            #过期30天,静态文件不怎么更新,过期可以设大一点,
            expires 30d;
        }

        #PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置.
        location ~ .php$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include fastcgi_params;
        }

        #禁止访问 .htxxx 文件
            location ~ /.ht {
            deny all;
        }

    }
}

三、虚拟主机的设置

虚拟主机是将一台服务器主机分成一台台“虚拟”的主机,每台虚拟主机都可以具有独立的域名,具有完整的Intemet服务器功能(WWW、FTP、Email等),同一台主机上的虚拟主机之间是完全独立的。从网站访问者来看,每一台虚拟主机和一台独立的主机完全一样。

[root@server1 logs]# vim  /usr/local/nginx/conf/nginx.conf
#虚拟主机 1
server {
        listen 80;
        #主机名称
        server_name www.westos.org;

        location / {
             #虚拟主机的发布目录
                root /www1;
                index  index.html;
                }
        }
#虚拟主机 2       
server {
        listen 80;
        server_name www.hello.org;

        location / {
                root /www2;
                index  index.html;
                }
        }
}
[root@server1 logs]# nginx -s reload

建立默认发布目录并修改发布页面

[root@server1 ~]# mkdir /www1
[root@server1 www1]# vim  index.html
www.westos.org
[root@server1 ~]# mkdir /www2
[root@server1 www2]# vim  index.html
www.hello.org

在客户端添加本地解析:

[root@foundation7 ~]# vim  /etc/hosts
172.25.7.1 www.westos.org www.hello.org 

测试:访问虚拟主机
这里写图片描述
Nginx从安装到虚拟主机、https加密、重定向的设置_第1张图片

四、https加密

HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层:SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
1.生成证书:

[root@server1 conf]# cd  /etc/pki/tls/certs/
[root@server1 certs]# make cert.pem
Country Name (2 letter code) [XX]:cn
State or Province Name (full name) []:shaanxi
Locality Name (eg, city) [Default City]:xi`an
Organization Name (eg, company) [Default Company Ltd]:westos
Organizational Unit Name (eg, section) []:linux
Common Name (eg, your name or your server's hostname) []:server1
Email Address []:[email protected]

[root@server1 certs]# ll cert.pem 
-rw------- 1 root root 3096 Aug  9 10:59 cert.pem
[root@server1 certs]# cp  cert.pem /usr/local/nginx/conf/

2.使nginx支持https

    # HTTPS server
    #
    server {
        listen       443 ssl;
        server_name  www.westos.org;

        ssl_certificate      cert.pem;
        ssl_certificate_key  cert.pem;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            root   /www1;
            index  index.html index.htm;
        }
    }
[root@server1 conf]# nginx -s reload

测试:访问https://www.westos.org
Nginx从安装到虚拟主机、https加密、重定向的设置_第2张图片

五、网页重定向

访问www.westos.org ==> https://www.westos.org

server {
        listen 80;
        server_name www.westos.org;
        rewrite ^(.*)$ https://www.westos.org$1 permanent;
        location / {
                root /www1;
                index  index.html;
                }
        }

Nginx从安装到虚拟主机、https加密、重定向的设置_第3张图片
Nginx从安装到虚拟主机、https加密、重定向的设置_第4张图片
访问www.westos.org/bbs页面==>http://bbs.westos.org

server {
        listen 80;
        server_name www.westos.org
        rewrite ^/bbs$ http://bbs.westos.org permanent;
        location / {
                root /www1;
                index  index.html;
                }
        }

Nginx从安装到虚拟主机、https加密、重定向的设置_第5张图片
从www.westos.org/bbs/index.html页面==>http://bbs.westos.org/index.html==>http://bbs.westos.org/index.html

server {
        listen 80;
        server_name www.westos.org;   
        rewrite ^/bbs$ http://bbs.westos.org permanent;
        rewrite ^/bbs/(.*)$ http://bbs.westos.org/$1 permanent;

        location / {
                root /www1;
                index  index.html;
                }
        }

Nginx从安装到虚拟主机、https加密、重定向的设置_第6张图片
当访问bbs.westos.org定位到 http://www.westos.org/bbs/

server {
        listen 80;
        server_name www.westos.org bbs.westos.org;       
        if ($host = "bbs.westos.org") {
        rewrite ^/(.*)$ http://www.westos.org/bbs/$1 permanent;
        }

        location / {
                root /www1;
                index  index.html;
                }
        }

Nginx从安装到虚拟主机、https加密、重定向的设置_第7张图片

你可能感兴趣的:(运维企业级)