Nginx基础应用 做反向代理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx基础应用 做反向代理相关的知识,希望对你有一定的参考价值。
安装nginx,升级
用户认证 auth_basic_user_file
虚拟主机 加密
反向代理:
源码包安装nginx
# yum –y install gcc pcre-devel(支持正则) openssl-devel(支持加密) #安装常见依赖包
# useradd –s /sbin/nologin nginx #为程序创建用户
# tar -xf nginx-1.8.0.tar.gz
# cd nginx-1.8.0
# ./configure --help | grep with #查看功能模块
# ./configure \
> --prefix=/usr/local/nginx \ #指定安装路径
> --user=nginx \ #指定用户 默认nobody
> --group=nginx \ #指定组
> --with-http_ssl_module #SSL加密功能
......
nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx configuration prefix: "/usr/local/nginx/conf" #所有配置文件都有备份.default
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/logs/error.log"
nginx http access log file: "/usr/local/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"
# make && make install
# ln -s /usr/local/nginx/sbin/nginx /usr/sbin/ #添加命令
----------------------------------------------------------------------------------
首先了解编译安装 电脑做了什么?
./configure......
选择安装位置 程序用户和添加的模块等
make
C语言源码编译成二进制可执行程序 库文件等
这里会生成二进制文件并放进objs目录下 绿色的nginx
make install
将编译好的文件复制到对应目录下
这里会各种复制 相当于:
cp objs/nginx /usr/local/nginx/sbin
cp html /usr/local/nginx/
cp conf /usr/local/nginx/
cp logs /usr/local/nginx/
注意:原来有则会覆盖掉原来数据
----------------------------------------------------------------------------------
升级Nginx
编译新版本nginx
# tar -zxvf nginx-1.9.0.tar.gz
# cd nginx-1.9.0
[[email protected] nginx-1.9.0]# ./configure \
> --prefix=/usr/local/nginx \
> --user=nginx \
> --group=nginx \
> --with-http_ssl_module
#会在目录下生成objs文件夹 这是编译文件
# make #会在objs里生成nginx程序文件着就是升级的程序
注意: 这里继续make install会覆盖安装 会删除软件下所有目录所有数据!
# mv /usr/local/nginx/sbin/nginx \
>/usr/local/nginx/sbin/nginxold #将旧版本备份起来以便升级失败后还原,重要
# cp objs/nginx /usr/local/nginx/sbin/ #拷贝新版本
# /usr/local/nginx/sbin/nginx -s stop #停服务
# /usr/local/nginx/sbin/nginx #启动 重启是 -s reload
----------------------------------------------------------------------------------
nginx命令
# /usr/local/nginx/sbin/nginx #启动服务
# /usr/local/nginx/sbin/nginx -s stop #关闭服务
# /usr/local/nginx/sbin/nginx -s reload #重新加载 配置文件
# /usr/local/nginx/sbin/nginx –V #查看软件信息
......
configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module
#有软件安装配置 模块信息
nginx服务默认通过TCP 80端口监听客户端请求:
# netstat -anptu | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 10441/nginx
----------------------------------------------------------------------------------
配置文件
注意: 每段后面都有;分号结尾,一个server代表一个网站;
配置文件中 / 根 代表/usr/local/nginx/下
虚拟主机不能完全一样
# vim /usr/local/nginx/conf/nginx.conf #全局配置文件
注意:
每段后面都有;分号结尾
一个server{}代表一个网站
基于域名
基于IP
基于端口
相同条件由于多个虚拟网站第一个优先显示 #如果不想让人用IP访问可在第一个放一个空页面 用IP就无法访问了
http{
# server {
# listen 80; #等同于listen 192.168.4.5:80; #一个IP也就是一张网卡
# server_name www.haha.com;
# location / {
# root html; #网站目录
# index index.html index.htm;
# }
# }
server {
listen 80; #可写 listen 192.168.4.5:80;
server_name localhost;
auth_basic "Input Password:"; #认证提示符
auth_basic_user_file "/usr/local/nginx/pass"; #认证密码文件用户,是nginx独立创建的
location / {
root web; #目录不要和上面的重复不然会一样 出去要创建
index index.html index.htm;
}
}
}
#pid logs/nginx.pid; #记录nginx的进程pid文件 此文件可用于判断nginx是否启动
配置认证用户
#yum install -y httpd-tools #安装创建网站用户的工具
# htpasswd -cm /usr/local/nginx/pass tom #-c是创建密码文件 以有可以不用加-c m是md5加密方式 可以不写默认也是md5
New password:
Re-type new password:
Adding password for user tom
# htpasswd /usr/local/nginx/pass jarry
# nginx -s reload
日志文件 logs
----------------------------------------------------------------------------------
https
对称密钥:单机加密 AES,DES
加密解密同一个 比如RAR压缩密码(AES)
非对称密钥:网络加密 RSA,DSA
公钥 私钥 证书
扩展
# md5sum a.txt #查看文加md5值 内容改变md5校验值就会变(数据安全)
----------------------------------------------------------------------------------
SSL虚拟主机
源码安装Nginx时必须使用--with-http_ssl_module参数
1.生成私钥与证书
# cd /usr/local/nginx/conf
# openssl genrsa -out cert.key #生成私钥 也以这样写openssl genrsa > cert.key
# openssl req -new -x509 -key cert.key -out cert.pem #生成证书 同样 -out 可 > 替换
2.修改Nginx配置文件,设置加密网站的虚拟主机
# vim /usr/local/nginx/conf/nginx.conf #在尾部有模版
… …
server {
listen 443 ssl;
server_name www.cc.com;
ssl_certificate cert.pem; # 公钥 注意在conf下
ssl_certificate_key cert.key; # 私钥
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
----------------------------------------------------------------------------------
Nginx反向代理
调度器 client----> proxy----->web1,web2,web3...(web高可用)
proxy:
调度
负载均衡
健康检查(自动感知 后台ping)
1.安装nginx
2.修改配置
# vim /usr/local/nginx/conf/nginx.conf
http {
......
upstream webserver { #定义集群 可以定义多个集群
ip_hash; #会话保持
server 192.168.2.100; #web服务器的ip
server 192.168.2.200 weight=2 max_fails=3 fail_timeout=30;
server 192.168.1.1 down;
#weight默认1会在此会连续调用两次数
#max_fails错误连接次数
#fail_timeout连接失败后(ping)等待时间
#down 停用服务器(维修)
#ip_hash 会话保持,根据客户端(同一IP)只会访问同一后端服务器防止账号重复登陆的问题
}
server {
listen 80;
server_name www.test.com;
location / {
proxy_pass http://webserver; #调用集群 写在location里,下面的配置就无效拉
root html;
index index.html index.htm;
}
......
}
3.起服务
# nginx -s reload
Nginx负载方式
轮询 weight ip_hash
weight:指定轮询几率 默认为 1 权重值和访问率成正比
服务器组主机状态类型
down: 表示服务其暂时关闭
max_dails: 允许请求失败次数 默认1
fail_timeout: max_dails次请求失败后暂停服务时间
backup:备份服务器
以上是关于Nginx基础应用 做反向代理的主要内容,如果未能解决你的问题,请参考以下文章