Nginx总结三

Nginx安装和配置

正向代理
比如你现在缺钱,想找马云爸爸去借钱,,到最后碰一鼻子灰借不到钱。不过你认识你家隔壁老王,而老王认识马云同志,而且关系还很好。这时候你托老王去找马云借钱,当然这事最后成了,你从马云那里借到了500万!最后由老王把钱转交给你。在这里,老王就充当了一个重要的角色:代理。此时的代理,就是我们常说的正向代理。代理客户端去请求服务器,隐藏了真实客户端,服务器并不知道真实的客户端是谁。正向代理应用最广泛你访问不了谷歌、Facebook的时候,你可以在国外搭建一台代理服务器,代理你访问,代理服务器再把请求到的数据转交给你,你就可以看到内容了。

反向代理
你拨通了联通客服10010电话,联通的总机可能随机给你分配一个闲置的客服给你接通。这时候你如愿以偿的和客服聊了起来,问了问她目前有没有结婚、有没有对象。此时联通总机充当的角色就是反向代理,你只知道和客服接通并聊了起来,具体为什么会接通这个客服MM,怎么接通的,你并不知道。反向代理隐藏了真正的服务端,就像你每天使用百度的时候,只知道敲打www.baidu.com就可以打开百度搜索页面,但背后成千上万台百度服务器具体是哪一台为我们服务的。我们只知道这个代理服务器,它会把我们的请求转发到真实为我们服务的那台服务器那里去。

综上所述:正向代理代理对象是客户端,反向代理代理对象是服务端

Nginx的安装
相关库的安装
安装前的准备
Nginx的安装需要确定Linux安装相关的几个库,否则配置和编译会出现错误, 具体的检查安装过程为:
(1) gcc编译器是否安装
    检查是否安装:yum list installed | grep gcc
    执行安装:yum install gcc -y
(2) openssl库是否安装
    检查是否安装:yum list installed | grep openssl
    执行安装:yum install openssl openssl-devel -y
(3) pcre库是否安装
    检查是否安装:yum list installed | grep pcre
    执行安装:yum install pcre pcre-devel -y
(4) zlib库是否安装
    检查是否安装:yum list installed | grep zlib
    执行安装:yum install zlib zlib-devel -y
(5) 一次性安装,执行如下命令
      yum install gcc openssl openssl-devel pcre pcre-devel zlib zlib-devel -y
安装后查看相关的配置----------------
make[1]: Leaving directory `/root/nginx-1.14.2'
[root@192 nginx-1.14.2]# cd /usr/local/nginx/
[root@192 nginx]# ll
total 4
drwxr-xr-x 2 root root 4096 Feb 25 22:53 conf
drwxr-xr-x 2 root root   38 Feb 25 22:53 html
drwxr-xr-x 2 root root    6 Feb 25 22:53 logs
drwxr-xr-x 2 root root   34 Feb 25 22:53 sbin
[root@192 nginx]# 
启动关闭Nginx等
[root@192 sbin]# cd   /usr/local/nginx/sbin
[root@192 sbin]# ./nginx 
[root@192 sbin]# netstat -tulnp | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      35344/nginx: master 
tcp        0      0 192.168.1.1:4506        0.0.0.0:*               LISTEN      2480/python         
tcp6       0      0 :::8009                 :::*                    LISTEN      1158/java           
tcp6       0      0 :::8080                 :::*                    LISTEN      1158/java           
tcp6       0      0 ::1:8005                :::*                   LISTEN      1158/java
或者通过nginx的配置方式来启动
[root@192 sbin]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
  • 通过网页访问的是http://192.168.1.1:80


重启命令
[root@192 sbin]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -s reload
[root@192 sbin]# ./nginx -s reload
配置检查
[root@192 sbin]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
其他命令
Linux上查看nginx版本:/usr/local/nginx/sbin/nginx -V
-v (小写的v)显示 nginx 的版本
-V (大写的V)显示 nginx 的版本、编译器版本和配置参数
[root@192 sbin]# ./nginx -V
nginx version: nginx/1.14.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
configure arguments: --prefix=/usr/local/nginx
[root@192 sbin]# ./nginx -v
nginx version: nginx/1.14.2

Window下环境搭建
在官方网站下载最新windows版的nginx:http://nginx.org/en/download.html
将下载下来的nginx压缩包解压到一个目录下,解压后该软件就可以启动使用了
启动方式1:双击解压目录下的nginx.exe文件即可运行nginx;
启动方式2:进入dos窗口,切换到nginx主目录下,在dos窗口执行命令:start nginx
关闭方式1:在资源管理器杀掉Nginx进程(有两个进程)
关闭方式2:在dos窗口切换到Nginx安装主目录下执行命令:nginx -s stop


nginx的配置

Nginx的配置主要有三块,Nginx的核心配置文件主要由三个部分构成
这个文件位于Nginx的安装目录/usr/local/nginx/conf 目录下,名字为nginx.conf
(一) 基础配置

#配置worker进程运行用户 nobody也是一个linux用户,一般用于启动程序,没有密码
user  nobody;  
#配置工作进程数目,根据硬件调整,通常等于CPU数量或者2倍于CPU数量
worker_processes  1;  
#配置全局错误日志及类型,[debug | info | notice | warn | error | crit],默认是error
error_log  logs/error.log;  
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
pid        logs/nginx.pid;  #配置进程pid文件 

(二) events的配置

#配置工作模式和总连接数目
events {
    worker_connections  1024;
}

(三)http服务配置

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"';
    #access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;

(四)server配置可以配置多个

   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;

Nginx的主要的应用
 静态网站部署
 负载均衡
 静态代理
 动静分离
 虚拟主机

(一)静态网站部署
Nginx是一个HTTP的web服务器,可以将服务器上的静态文件(如HTML、图片等)通过HTTP协议返回给浏览器客户端。

案例一:
将准备好的静态文件放到该Nginx的服务器上面,放到/opt/static上面

drwxr-xr-x 3 root root    4096 Sep 27  2016 ace-master
-rw-r--r-- 1 root root 2242437 May 11  2020 ace-master.zip
[root@192 static]# pwd 
/opt/static
[root@192 static]# mv ace-master http

然后修改nginx.conf 的配置文件

 location / {
            root   /root/opt/static/http/;
            index  index.html index.htm;
        }
###然后重启nginx的服务应用,./nginx -s reload

登陆网址http://192.168.1.1:80 查看网页情况如下:


通过 http://192.168.1.1/http/ 来访问该静态网页,修改配置文件信息。
访问的路径是 /opt/static/http/ 修改配置文件
可以理解成 ip + port = root的地址
相当于访问http://192.168.1.1:80 = root = /opt/static
相当于访问http://192.168.1.1:80/http = /opt/static/http

       location /http {
            root   /opt/static;
            index  index.html index.htm;
        }
# 然后重启相关的nginx服务

(二)负载均衡
初期,我们一般都使用单台机器对外提供集中式服务。随着业务量的增大,我们一台服务器不够用,此时就会把多台机器组成一个集群对外提供服务,但是,我们网站对外提供的访问入口通常只有一个,比如 www.baidu.com。那么当用户在浏览器输入www.baidu.com进行访问的时候,如何将用户的请求分发到集群中不同的机器上呢,这就是负载均衡要做的事情。负载均衡通常是指将请求"均匀"分摊到集群中多个服务器节点上执行,这里的均匀是指在一个比较大的统计范围内是基本均匀的,并不是完全均匀。

  • 负载均衡实现的方式
    硬件负载均衡
    主要的有 F5、深信服、Array 等应用
    优点是有厂商专业的技术服务团队提供支持,性能稳定
    缺点是费用昂贵,对于规模较小的网络应用成本太高

    软件负载均衡
    比如 Nginx、LVS、HAProxy 等,优点是免费开源,成本低廉
    Nginx通过在nginx.conf文件进行配置即可实现负载均衡

案例:

通过nginx来实现访问两台tomcat的负载均衡,主要修改的是
在http模块加上upstream配置,在server模块里添加location,并配置proxy_pass。

下载免安装tomcat的方式来,解压可以直接使用.

#在/usr/local下面解压需要的包
[root@192 local]# tar -zxvf apache-tomcat-9.0.13.tar.gz
[root@192 local]# cp -rf  apache-tomcat-9.0.13/ apache-tomcat-9.0.13-9100/
[root@192 local]# cp -rf  apache-tomcat-9.0.13/ apache-tomcat-9.0.13-9200/

修改两台tomcat的端口连接,主要的server.xml这个文件,主要修改三个地方。

[root@192 conf]# pwd 
/usr/local/apache-tomcat-9.0.13-9100/conf
[root@192 conf]# cp server.xml server.xml.20210309 
[root@192 conf]# vi server.xml
 <Connector port="9100" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
-------------------------------------------------------
[root@192 conf]# pwd
/usr/local/apache-tomcat-9.0.13-9200/conf
[root@192 conf]# vi server.xml 
<Connector port="9200" protocol="HTTP/1.1"
              connectionTimeout="20000"
              redirectPort="8443" />
<Server port="8004" shutdown="SHUTDOWN">
<Connector port="8008" protocol="AJP/1.3" redirectPort="8443" />
---------------------------------------------------------
把相应的准备好的包myweb.war放在该路径下面
[root@192 webapps]# pwd 
/usr/local/apache-tomcat-9.0.13-9200/webapps
[root@192 webapps]# ll
total 628
drwxr-x--- 14 root root   4096 Mar  8 19:06 docs
drwxr-x---  6 root root     78 Mar  8 19:06 examples
drwxr-x---  5 root root     82 Mar  8 19:06 host-manager
drwxr-x---  5 root root     97 Mar  8 19:06 manager
drwxr-x---  5 root root     63 Mar  8 21:13 myweb
-rw-r--r--  1 root root 633679 Mar  8 21:11 myweb.war
drwxr-x---  3 root root   4096 Mar  8 19:06 ROOT
-------------------------------------------------------------------
#重启两台相应的服务应用
[root@192 bin]# pwd 
/usr/local/apache-tomcat-9.0.13-9200/bin
[root@192 bin]# ./startup.sh |tailf ../logs/catalina.out
/usr/local/apache-tomcat-9.0.13-9100/bin
[root@192 bin]# ./startup.sh |tailf ../logs/catalina.out

然后通过网页访问这两个tomcat的地址

好了,到目前位置,两台tomcat的访问已经通了,接下来可以通过nginx来实现负载均衡。
修改一:在http模块加上upstream配置
负载均衡模块(upstream)upstream模块主要负责负载均衡的配置
,通过默认的轮询调度方式来分发请求到后端服务器。

    upstream www.myweb.com {
        server  127.0.0.1:9100 weight=3; 
        server  127.0.0.1:9200 weight=1;
    }
---------------------------------------------------------
其中weight=1表示权重,用于后端服务器性能不均的情况,
访问比率约等于权重之比,权重越大访问机会越多
upstream是配置nginx与后端服务器负载均衡非常重要的一个模块,
并且它还能对后端的服务器的健康状态进行检查,
若后端服务器中的一台发生故障,则前端的请求不会转发到该故障的机器。

修改二:在server模块里添加location,并配置proxy_pass

        location /myweb {
            proxy_pass  http://www.myweb.com;
        }
#重启nginx服务
-rwxr-xr-x 1 root root 3746901 Feb 25 22:53 nginx
[root@192 sbin]# ./nginx -s reload

修改三:因为是在虚拟机上面,修改linux系统和windows的hosts文件

[root@192 ~]# cat /etc/hosts
127.0.0.1   www.myweb.com
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.1 www.myweb.com

修改windows的hosts文件

修改为 192.168.1.1 www.myweb.com

最后为了方便查看nginx访问的是哪个tomcat,修改其中一台9100的服务器的 index.jsp。

[root@192 myweb]# pwd
/usr/local/apache-tomcat-9.0.13-9100/webapps/myweb
[root@192 myweb]# vi index.jsp
修改为:
<p style="font-size:18px;">
江山如此多娇-9100<br/>
惜秦皇汉武略输文采,唐宗宋祖稍逊风骚<br/>
一代天骄成吉思汗,只识弯弓射大雕<br/>

**最后通过访问页面 http://www.myweb.com/myweb/ **


再次刷新,该网页信息:

可以看出来通过nginx,可以实现简单的负载均衡

Nginx的常见轮询策略还有轮询,权重, ip_hash ,最少连接方式等。

配置1:
upstream backserver { 
        server 127.0.0.1:9100;
    #其它所有的非backup机器down的时候,才请求backup机器
        server 127.0.0.1:9200 backup; 
} 
配置2:
    upstream backserver { 
    server 127.0.0.1:9100;
    #down表示当前的server是down状态,不参与负载均衡
    server 127.0.0.1:9200 down; 
} 

静态的代理
把所有静态资源的访问改为访问Nginx,而不是访问Tomcat,这种方式叫静态代理。因为Nginx更擅长于静态资源的处理,性能更好,效率更高。所以在实际应用中,我们将静态资源比如图片、css、html、js等交给nginx处理,而不是由tomcat处理。


方式一:
在nginx.conf的location中配置静态资源的后缀
例如:当访问静态资源,则从linux服务器/opt/static目录下获取(举例)
location ~ ..(js|css|htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid
|doc|ppt|pdf|xls|mp3|wma){ root /opt/static; } 说明  ~ 表示正则匹配,也就是说后面的内容可以是正则表达式匹配  第一个点 . 表示任意字符  *表示一个或多个字符  \. 是转移字符,是后面这个点的转移字符  | 表示或者  表示结尾
整个配置表示以 .后面括号里面的这些后缀结尾的文件都由nginx处理
放置静态资源的目录,要注意一下目录权限问题,如果权限不足,给目录赋予权限; 否则会出现403错误 chmod 755
方式二:
在nginx.conf的location中配置静态资源所在目录实现
例如:当访问静态资源,则从linux服务器/opt/static目录下获取(举例)
location ~ .
/(css|js|img|images) {
root /opt/static;
}
xxx/css
xxx/js
xxx/img
xxx/images
我们将静态资源放入 /opt/static 目录下,然后用户访问时由nginx返回这些静态资源.

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容