Nginx负载均衡实现https访问

整体流程:1.搭建tomcat项目集群(默认完成) 2.安装nginx需要的库 3.安装Nginx并修改配置文件 4.启动测试

1.1.1. 安装Nginx

1.1.1.1. 安装环境:

安装pcre库

yum -y install pcre-devel

安装zlib库

yum install -y zlib-devel

安装openssl库

yum install -y openssl openssl-devel   或者  编译安装

编译安装openssl:

1.上传openssl压缩包

按alt+p进入上传界面,上传openssl-1.0.1t.tar.gz

2.解压压缩包

[[email protected] ~]# tar –zxvf openssl-1.0.1t.tar.gz

[[email protected] ~]#cd openssl-1.0.1t

3.编译安装

设置安装参数

[[email protected] openssl-1.0.1t]# ./config

编译并安装

[[email protected] nginx-1.7.7]#make

[[email protected] nginx-1.7.7]#make install

准备安装Nginx:

上传Nginx

按alt+p进入上传界面,上传Nginx

1.1.1.2. 解压

解压

[[email protected] ~]# tar -zxvf nginx-1.10.2.tar.gz

进入解压文件夹

[[email protected] ~]# cd nginx-1.10.2

1.1.1.3. 编译安装

设置安装参数

[[email protected] nginx-1.10.2]#./configure --prefix=/usr/local/nginx --with- http_ssl_module

编译并安装

[[email protected] nginx-1.10.2]# make

[[email protected] nginx-1.10.2]# make install

openssl生成测试CA证书:详见参考资料

1.1.1.4. 修改nginx.conf文件,实现负载均衡:

需求:1.用户通过https访问,通过nginx反向代理实现http内部跳转2.实现页面压缩gzip 3.记录用户真实ip地址 4.使用ip-hash方式创建集群信息,解决session粘滞问题 5.访问地址为DNS注册域名 6.nginx管理静态资源

配置文件如下:


#user  nobody;

worker_processes  1;

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

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"‘;

#配置集群信息

upstream xxx {

ip_hash;

server xxx.xx.xxx.xx:8083;

server xxx.xx.xxx.xx:8085;

}

#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;

#charset koi8-r;

#access_log  logs/host.access.log  main;

location / {

root   html;

index  index.html index.htm;

}

#error_page  404              /404.html;

# redirect server error pages to the static page /50x.html

#

error_page   500 502 503 504  /50x.html;

location = /50x.html {

root   html;

}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80

#

#location ~ \.php$ {

#    proxy_pass   http://127.0.0.1;

#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

#

#location ~ \.php$ {

#    root           html;

#    fastcgi_pass   127.0.0.1:9000;

#    fastcgi_index  index.php;

#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

#    include        fastcgi_params;

#}

# deny access to .htaccess files, if Apache‘s document root

# concurs with nginx‘s one

#

#location ~ /\.ht {

#    deny  all;

#}

}

# another virtual host using mix of IP-, name-, and port-based configuration

#

#server {

#    listen       8000;

#    listen       somename:8080;

#    server_name  somename  alias  another.alias;

#    location / {

#        root   html;

#        index  index.html index.htm;

#    }

#}

# HTTPS server

#

server {

listen       443 ssl;

server_name  www.xxx.com;

ssl_certificate      /usr/local/nginx/server.crt;

ssl_certificate_key  /usr/local/nginx/server.key;

ssl_session_cache    shared:SSL:1m;

ssl_session_timeout  5000m;

#    ssl_ciphers  HIGH:!aNULL:!MD5;

ssl_prefer_server_ciphers  on;

location ~ \.png$

{

root /home;

}

location / {

#root html;

#index  index.html index.htm;

#配置用户真实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;

#使用之前配置的集群

proxy_pass http://xxx;

}

}

}

注意:1.location块root的路径问题:例如:location块配置如下

location ~ \.png$

{

root /home;

}

项目图片访问路径为/images/a.png,那么匹配正则后路径变为/home/images/a.png

以上配置文件location正则uri仅为示例。

1.1.1.5. 启动Nginx

查看安装文件,conf是配置文件,sbin是启动目录

[[email protected] nginx-1.10.2]# cd /usr/local/nginx/

进入启动文件目录,启动Nginx

[[email protected] nginx]# cd sbin/

[[email protected] sbin]# ./nginx

查看启动进程

关闭防火墙

[[email protected] sbin]# service iptables stop

访问测试

1.1.1.6. Nginx相关扩充:

访问流程:在不添加‘可选匹配规则’模块时,Nginx服务器首先在server块的多个location块中搜索是否有标准uri和请求字符串匹配,如果有多个可以匹配,就记录匹配度最高的一个。然后,服务器再用location块中的正则uri和请求字符串匹配,当地一个正则uri匹配成功,就不再进行搜索,并使用这个location块处理此请求,如果正则匹配全部失败,就使用刚才记录的匹配度最高的location块处理此请求。

命令:

./nginx

./nginx -s stop

./nginx -s quit

./nginx -s reload

./nginx -s quit:此方式停止步骤是待nginx进程处理任务完毕进行停止。

./nginx -s stop:此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。

查询nginx进程:

ps aux|grep nginx

8.2.6 重启服务:

1.先停止再启动(推荐):

对 nginx 进行重启相当于先停止再启动,即先执行停止命令再执行启动命令。如下:

./nginx -s quit

./nginx

2.重新加载配置文件:

当 ngin x的配置文件 nginx.conf 修改后,要想让配置生效需要重启 nginx,使用-s reload不用先停止 nginx再启动 nginx 即可将配置信息在 nginx 中生效,如下:

./nginx -s reload

8.2.7 访问: http://xx.xx.xx.xxx/ 是否成功加载nginx欢迎页面,如果看到Welcome to nginx!字样则证明安装成功

8.2.8 查看nginx 安装路径 whereis nginx

时间: 2024-12-22 15:36:59

Nginx负载均衡实现https访问的相关文章

nginx负载均衡转发https

A服务器做负载转发到  B,C两台服务器 : 这时候要添加https域名,则以下是A服务器的nginx配置 upstream backend { server ip; server ip2;} server { listen 80; listen 443 ssl; server_name localhost; #这个注释掉才能访问http端口 #ssl on; ssl_certificate /etc/nginx/conf.d/cert/1.crt; ssl_certificate_key /e

Linux学习总结(四十三)nginx 负载均衡 https 配置

1 nginx 负载均衡 当被代理的服务端为多台服务器时,就存在一个分发的问题,那么就涉及到一个负载均衡的概念.如何让客户端请求按照预定的设想均衡的分发到各个服务器上,就要使用各种均衡算法.下面介绍的ip哈希算法可以实现如下目的.当对后端的多台动态应用服务器做负载均衡时,ip_hash指令能够将某个客户端IP的请求通过哈希算法定位到同一台后端服务器上.这样,当来自某个IP的用户在后端Web服务器A上登录后,再访问该站点的其他URL,能够保证其访问的还是后端Web服务器A.如果请求的网站涉及到用户

12.17 Nginx负载均衡;12.18 ssl原理;12.19 生产ssl密钥对;12.20 Nginx配置ssl

扩展: 针对请求的uri来代理 http://ask.apelearn.com/question/1049 根据访问的目录来区分后端web http://ask.apelearn.com/question/920 12.17 Nginx负载均衡 1. 安装dig命令: [[email protected] ~]# yum install -y bind-utils 2. 用dig获取qq.com的ip地址: [[email protected] ~]# dig qq.com 3. 创建ld.co

day10 nfs服务,nginx负载均衡,定时任务

=====================nginx 负载均衡======================= 实现nginx负载均衡的效果,并运用nfs服务共享目录,使所有nginx服务拥有共同的http目录 nginx安装:http://www.cnblogs.com/alwaysInMe/p/6924859.html nfs安装:NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定. ===>  环境配置及软件安装 注:本次安装用的是cent

Nginx 负载均衡-加权轮询策略剖析

本文介绍的是客户端请求在多个后端服务器之间的均衡,注意与客户端请求在多个nginx进程之间的均衡相区别(Nginx根据每个工作进程的当前压力调整它们获取监听套接口的几率,那些当前比较空闲的工作进程有更多机会获取到监听套接口,从而客户端的请求到达后也就相应地被它捕获并处理).如果Nginx是以反向代理的形式配置运行,那么对请求的实际处理需要转发到后端服务器运行,如果后端服务器有多台,如何选择一台合适的后端服务器来处理当前请求,就是本文要说的负载均衡.这两种均衡互不冲突并且能同时生效. nginx不

Nginx负载均衡监测节点状态

Nginx负载均衡监测节点状态 v插件(ngx_http_upstream_check_module) upstream_check_module介绍: 该模块可以为Tengine提供主动式后端服务器健康检查的功能. 该模块在Tengine-1.4.0版本以前没有默认开启,它可以在配置编译选项的时候开启:./configure--with-http_upstream_check_module upstream_check_module官方文档 http://tengine.taobao.org/

使用Nginx负载均衡搭建高性能.NETweb应用程序二

在文章<使用Nginx负载均衡搭建高性能.NETweb应用程序一>中,让我们对Nginx有了一个初步认识,下面我们将在windows平台下面使用Nginx演示集群部署我们的web应用. 一.下载Nginx部署包 到Nginx官网去下载一个windows平台下面的Nginx部署包,目前我下载的是一个nginx-1.6.2版本的. 二.命令启动服务 启动:start nginx.exe 停止:nginx -s stop 重新加载: nginx -s reload 三.实例搭建 首 选:我们要在我们

Nginx负载均衡与反向代理—《亿级流量网站架构核心技术》

当我们的应用单实例不能支撑用户请求时,此时就需要扩容,从一台服务器扩容到两台.几十台.几百台.然而,用户访问时是通过如http://www.XX.com的方式访问,在请求时,浏览器首先会查询DNS服务器获取对应的IP,然后通过此IP访问对应的服务.因此,一种方式是www.XX.com域名映射多个IP,但是,存在一个最简单的问题,假设某台服务器重启或者出现故障,DNS会有一定的缓存时间,故障后切换时间长,而且没有对后端服务进行心跳检查和失败重试的机制.因此,外网DNS应该用来实现用GSLB(全局负

[转]Nginx负载均衡原理初解

什么是负载均衡 我们知道单台服务器的性能是有上限的,当流量很大时,就需要使用多台服务器来共同提供服务,这就是所谓的集群. 负载均衡服务器,就是用来把经过它的流量,按照某种方法,分配到集群中的各台服务器上.这样一来不仅可以承担 更大的流量.降低服务的延迟,还可以避免单点故障造成服务不可用.一般的反向代理服务器,都具备负载均衡的功能. 负载均衡功能可以由硬件来提供,比如以前的F5设备.也可以由软件来提供,LVS可以提供四层的负载均衡(利用IP和端口), Haproxy和Nginx可以提供七层的负载均