Nginx基础应用 做反向代理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx基础应用 做反向代理相关的知识,希望对你有一定的参考价值。

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基础应用 做反向代理的主要内容,如果未能解决你的问题,请参考以下文章

Nginx反向代理的使用及原理

nginx 反向代理说明

用nginx反向代理的问题?(详内)

Nginx简单粗暴的反向代理教程

Nginx做反向代理后,请求变慢的问题

Nginx 如何设置反向代理