Linux下Nginx相关,虚拟主机、https:CA证书、集群和负载均衡

Nginx

Nginx 是一款高性能的Web服务器软件.

  • 具有极高的并发性能
  • 利用Nginx与Tomcat组合使用, 搭建反向代理集群

Nginx 反向代理集群可以解决网站的高并发问题!

常见Web Server

开源软件:

  • Nginx
  • Apache
  • Apache Tomcat (Java EE)
  • Jetty (Java EE)

商业软件

  • Microsoft IIS
  • IBM Webspare (Java EE)
  • Oracle Weblogic (Java EE)

Java EE WEB 服务器也称为 Java WEB 容器.

使用Nginx

1.源码编译安装

参考文档: http://nginx.org/en/docs/configure.html

安装步骤:

  1. 下载源代码

    wget http://nginx.org/download/nginx-1.12.2.tar.gz

  2. 创建nginx用户

    useradd nginx

  3. 创建 nginx 的安装目标目录

    mkdir /usr/local/nginx

  4. 安装编译时候需要的依赖包(可选)

    yum -y install pcre-devel openssl openssl-devel

  5. 释放并且编译

    tar -zxf nginx-1.12.2.tar.gz
    cd nginx-1.12.2
    ./configure --prefix=/usr/local/nginx --user=nginx
    –with-http_ssl_module
    make
    make install

6.启动:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
关闭:
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf

7.检查进程

ps -A|grep nginx

测试, 用浏览器访问

http:/192.168.17.70 

Nginx 的配置文件结构

Nginx的功能是通过配置文件实现的, 使用Nginx就是会使用Nginx的配置文件.

nginx配置文件位置:

  1. 编译安装版本
    • /usr/local/nginx/conf/nginx.conf
  2. yum安装版本
    • /etc/nginx/nginx.conf

Nginx配置文件结构

通用(全局)配置参数

http{
	http 协议通用参数

	server{
		虚拟机配置参数
	}

	server{
		虚拟机配置参数
	}

}

全局通用参数

  1. worker_processes

    建议按照处理器数量进行设置, 4处理器设置为4

     worker_processes  1;
    
  2. 每个进程的线程数量, 就是进程中线程池的大小.

     events {
         worker_connections  1024;
     }
    
  3. pid 文件用于存储 Nginx 主进程号

  4. 日志文件, 如果打开可以记录日志,但同时服务器的性能也会下降

http通用参数

  1. ContentType 类型映射, 也就是多媒体文件类型映射.

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

    使用include指令简化主配置文件.

  2. keepalive 指定HTTP/1.1 协议时候的服务器端的长连接等待超时时间

     keepalive_timeout  65;
    
  3. 对服务器的响应进行gzip压缩传输, 可以节省网络流量. 但是问题有两个, 一个是老旧浏览器(IE6)不支持, 第二个会占用服务器的处理器.

     gzip  on;
    

更新 Nginx配置文件实验

cd /usr/local/nginx/conf
cp nginx.conf nginx.conf.2018.5.3
vim nginx.conf   //开放 http 访问日志, 开放gzip压缩
//测试配置文件
nginx -t -c /usr/local/nginx/conf/nginx.conf
//热加载配置文件: 不停止nginx服务的情况下加载配置文件
nginx -s reload

用浏览器进行测试
查看 nginx/logs/access.log 日志文件

2.虚拟主机(个人理解:正向代理,分配私有ip)

在一个Web服务器上通过服务器软件模拟多台Web 服务器, 其中每个虚拟的Web服务器称为一个虚拟主机. 虚拟主机的好处是可以充分复用同一个web服务器. 对于用户来说, 用户感觉是多个网站.

Nginx 配置文件中 每个 server{} 块对应一个虚拟主机

虚拟主机有3种:

  1. 基于域名的虚拟主机(最常用的虚拟主机)
    • 需要为服务器指定多个域名
    • 域名资源解析方便, 便于用户记忆, 用户体验好.
  2. 基于IP虚拟主机
    • 需要为服务器指定多个IP地址
    • 需要租用IP
    • 很少使用这种方式
  3. 基于端口的虚拟主机
    • 绑定到服务器的多个端口
    • 默认80端口只有一个
    • 使用其他端口号提供服务, 因为用户需要记忆端口, 用户的体验差

2.1配置虚拟主机具体步骤:

1.本地解析域名实验

cd /etc
cp hosts hosts.2018.5.3
ping t1.canglaoshi.org  //不通
vim hosts    添加  10.7.11.19  t1.canglaoshi.org
			 添加  10.7.11.19  t2.canglaoshi.org

测试是否可以建立连接:
ping t1.canglaoshi.org //通了 结束命令 Ctrl + C
ping t2.canglaoshi.org //通了

windows 实验

用记事本编辑: C:\Windows\System32\drivers\etc\hosts
notepad hosts
添加  10.7.11.19  t1.canglaoshi.org
添加  10.7.11.19  t2.canglaoshi.org

测试是否可以建立连接:
ping t1.canglaoshi.org 通了 
ping t2.canglaoshi.org 通了 

2.搭建Nginx基于域名的虚拟主机

2.1在Nginx文件下对 nginx.conf文件进行编辑:

在原有的server上面进行添加t1和t2内容:
server {
listen 80;
server_name localhost;

# 请求 t1.canglaoshi.org 访问 t1文件夹 index.html文件
server{
    listen  80;
    server_name  t1.canglaoshi.org;
    location / {
        root  t1;
        index index.html;
    }
}
# 请求 t2.canglaoshi.org 访问 t2文件夹 index.html文件
server{
    listen  80;
    server_name  t2.canglaoshi.org;
    location / {
        root t2;
        index index.html;
    }
}

2.2在Nginx文件夹/usr/local/nginx中添加t1和t2文件夹,并添加两个index.html文件

<html>
	<body>	
		<h1>Hello t1.canglaosho.org</h1>
	</body>
</html> 

2.3测试:
平滑重启:/usr/local/nginx/sbin/nginx -s reload

最后测试:
http://t1.canglaoshi.org 对应域名
http://t2.canglaoshi.org

3.Nginx反向代理集群

个人理解:正向代理指的是多个客户端通过分配的私网ip访问一个代理服务器,这个代理服务器拥有一个公网ip,然后去访问互联网或者某个被墙的网站。反向代理一般是用作服务器集群,用户通过一个公网ip在浏览器上进行访问,然后请求会发到具体的Nginx服务器上,然后这个Nginx服务器只负责处理请求,并不处理数据,所以会将一个个的请求转发到具体的私网Tomcat服务器上进行处理,最后返回响应。

下图为正向与反向代理图:
在这里插入图片描述
下图为:Nginx集群部署图
在这里插入图片描述

反向代理集群的优势是提高网站整体的并发处理能力.

3.1配置使用反向代理

配置步骤

  1. 进行合理的规划: 规定每个服务器所扮演的角色.

  2. 本地客户端添加新的域名解析

  3. 配置每个Tomcat应用服务器, 并且启动测试.
    装好JDK和Tomcat后,在apache-tomcat-7.0.96/webapps/ROOT/index.jsp文件中,

    后面加上ip后缀,进行标记。

  4. 配置Nginx服务器, 对nginx文件夹中的Nginx.conf文件进行编辑,
    4.1.在 #gzip on;之下,加上文件的引入: include tts.conf;
    4.2.然后在添加一个tts.conf文件和内容,

  5. 配置好之后
    关闭 : /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
    开启: /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    平滑启动:/usr/local/nginx/sbin/nginx -s reload

  6. 客户端浏览器访问域名, 可以看到多台Tomcat为一个域名服务

参考的 demo.conf

upstream toms{
    server 10.7.11.218:8080;
    server 10.7.11.244:8080;
    server 10.7.11.43:8080;
 }

server{
    listen 80;
    server_name nick.org;
    location / {
        proxy_pass http://toms;
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_max_temp_file_size 0;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
   }

 }

Nginx 集群的负载均衡策略

一共有四种

  1. 默认是轮训策略

    • 可以增加权重 weight:因为服务器(Tomcat)购买的时间点不同,性能会有所不不同,所以利用权重,也就是weight10、weight20、weight20,权重越大,获得的轮训机会和请求更多。笑的请求少一些,让服务器的有硬件能源充分应用。
      -增加权重的具体操作则是在nginx的conf中配置tts.conf文件进行权重配置;
  2. ip_hash ip散列,根据用户的IP地址映射到固定的服务器

  3. url_hash 根据URL映射到固定的服务器:

个人添加服务器临时下线问题:

因为我们的软件会经常的升级,然后他升级的话,会将服务器依次下线升级之后,再放上去。
因为一般服务器会有多台在同时运行,所以不用担心,一台服务器down掉会有什么影响,
就这样依次的将服务器下线升级就可以达到整个服务器升级的手段。

具体操作:还是tts.config文件中在具体服务器后面加一个down,升级完成之后,再将down删除,
就可以重新上线啦,
具体代码例子:
server 10.7.11.19:8080 weight=10;
server 10.7.11.19:8080 weight=10 down ;

	修改好后,重启nginx:nginx的具体路径 -t
			例如一般是:/usr/local/nginx/sbin/nginx -t	
						/usr/local/nginx/sbin/nginx -s reload

阿里云配置Nginx转发到Tomcat

这里就可以将80和443端口的请求转发到Tomcat的8080端口了.

  1. 配置Nginx

    • yum安装的nginx配置文件在 /etc/nginx/nginx.conf

    • yum安装的nginx会自动包含 /etc/nginx/conf.d/*.conf, 所以将配置文件放到这个文件夹中就可以自动包含了.

    • 添加配置文件 1711.conf:

        upstream tomcat{
            server 127.0.0.1:8080;
        }
        
        server {
            listen 80;
            server_name 1711.canglaoshi.org;
            
            index index.html index.jsp;
        
            location / {
                proxy_pass http://tomcat;
                proxy_redirect     off;
                proxy_set_header   Host             $host;
                proxy_set_header   X-Real-IP        $remote_addr;
                proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
                proxy_max_temp_file_size 0;
                proxy_connect_timeout      90;
                proxy_send_timeout         90;
                proxy_read_timeout         90;
                proxy_buffer_size          4k;
                proxy_buffers              4 32k;
                proxy_busy_buffers_size    64k;
                proxy_temp_file_write_size 64k;
                
            }
        }
        
        server{
            listen 80;
            server_name tom.canglaoshi.org;
            return 301 https://tom.canglaoshi.org;
        }
        
        server{
            listen 443;
            server_name tom.canglaoshi.org;
        
            ssl on;
            index index.html index.jsp;
            ssl_certificate   cert/214462831460580.pem;
            ssl_certificate_key  cert/214462831460580.key;
            ssl_session_timeout 5m;
            ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_prefer_server_ciphers on;
        
        
            location / {
                proxy_pass http://tomcat;
                proxy_redirect     off;
                proxy_set_header   Host             $host;
                proxy_set_header   X-Real-IP        $remote_addr;
                proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
                proxy_max_temp_file_size 0;
                proxy_connect_timeout      90;
                proxy_send_timeout         90;
                proxy_read_timeout         90;
                proxy_buffer_size          4k;
                proxy_buffers              4 32k;
                proxy_busy_buffers_size    64k;
                proxy_temp_file_write_size 64k;
            }
        }
      

    配置了2个域名 其中 tom.canglaoshi.org 绑定了ssl证书

  2. 测试 重新启动nginx

  3. 在阿里云的dns解析中解析 两个域名tom.canglaoshi.org, 1711.canglaoshi.org 到服务器ip

  4. 测试: 用浏览器访问这两个域名.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员西柚柚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值