Nginx的安装与使用(翻新)

一、前置工作

1、安装编译工具和库文件

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

2、安装PCRE

PCRE 作用是让 Nginx 支持 Rewrite 功能

## 下载pcre
wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz 

## 解压
tar -zxvf pcre-8.35.tar.gz

## 编译安装
cd pcre-8.35/
./configure
make && make install

## 查看pcre版本
pcre-config --version
8.35

二、正式安装nginx

1、下载最新稳定版Nginx-1.20.2

wget https://nginx.org/download/nginx-1.20.2.tar.gz

2、解压编译安装:

## 解压:
tar -zxvf nginx-1.20.2.tar.gz

## 编译安装
cd nginx-1.20.2/
./configure
make && make install

3、安装完的Nginx,会自动创建到 /usr/local 目录下:

[root@master nginx-1.20.2]# cd /usr/local/
[root@master local]# ls
bin  etc  games  include  lib  lib64  libexec  nginx  sbin  share  src

## Nginx的启动命令位于
cd /usr/local/nginx/sbin
[root@master sbin]# ls
nginx

4、将Nginx命令添加到环境变量

vi /etc/profile

## 在fi和if中间行添加
export PATH=$PATH:/usr/local/nginx/sbin

## 让新的环境变量配置生效
source /etc/profile

5、启动Nginx及常用命令

## 启动Nginx
nginx

## 产看Nginx版本
nginx -v

## 立即停止,不推荐使用
nginx -s stop

## 平滑停止,推荐使用
nginx -s quit

## 重新加载(平滑重启)
nginx -s reload

6、Nginx默认监听服务器的80端口,校验

image.png


三、Nginx的配置文件

1、Nginx的配置文件的位置:

[root@master conf]# cd /usr/local/nginx/conf/
[root@master conf]# ls
fastcgi.conf          fastcgi_params          koi-utf  mime.types          nginx.conf          scgi_params          uwsgi_params          win-utf
fastcgi.conf.default  fastcgi_params.default  koi-win  mime.types.default  nginx.conf.default  scgi_params.default  uwsgi_params.default

2、主配置文件:nginx.conf:

image.png

由三部分组成:

  • 全局块:主要设置影响nginx服务器整体运行的配置指令,如:nginx的用户(组),允许生成的工作进程数(并发进程数数,提升nginx的并发性能),进程pid存放路径,日志存放路径,配置文件的引入等等;

  • events块:影响Nginx服务器与用户的网络连接,比如:worker_connections 为允许的用户最大连接数;

  • http块:Nginx服务器中配置最频繁的部分,代理,负载,缓存,以及外部配置的引入等都在这里配置;

    • 注意:http块中包含http全局块,server块;

3、http块详解:

image.png

  • http全局块:包含文件引入,MIME-TYPE定义,日志自定义,连接超时时间,单连接请求数上限等;

  • server块:这块和虚拟主机有密切关系,虚拟主机从用户角度看,是和硬件主机一模一样的,是为了减少硬件成本;

    • 我们平时所作的诸多配置几乎都在在server块中完成;

4、server块详解:

image.png

  • server全局块:本虚拟主机的监听配置和本虚拟主机的名称或IP配置;

  • location块:一个server块可以配置多个location块;

    • 基于Nginx服务器接收的请求字符串(如server_name/uri-string),对虚拟主机名称之外的字符串进行匹配(/url-string),对特定的请求进行处理。

    • 地址定向,数据缓存,应答控制等功能,还有许多第三方模块的配置也在这里进行。


四、Nginx实战

1、反向代理 + 负载均衡:

背景:在实际项目中,客户提供的服务器不允许使用80和443端口,但是我使用的k8s中的ingress只认80和443端口;

所以,我就在node1,node2节点开启了两个ingress,之后再master节点使用反向代理+负载均衡的方式,监听1080端口,然后将流量转发到内部的node1和node2的80端口上去;

upstream iotplat {
  server 10.130.41.15;
  server 10.130.59.49;
}

server {
  listen 1080;
  server_name localhost;
 # server_name iotplat.cosmoplat.com;
  location / {
     proxy_pass http://iotplat;
     proxy_set_header Host iotplat.cosmoplat.com;
     proxy_http_version 1.1;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Connection "upgrade";
  }
}

有了这个配置之后,我们使用 http://masterip:1080 即可正常访问网站;

# 其中
proxy_set_header Host tb.openiot.com;  ##是告诉下游服务器,访问它的host域名为tb.openiot.com,这是ingress中配置的匹配域名;
### 正常时候,如果我们是要把上有的host传递到下游去,可使用$host获取动态变量值,传递下去;

# 后面的三行,是为了实现高级协议转发,如websocket的转发;不然websocket长连接无法被代理下去。


五、增加conf.d目录,便于多项目管理

在默认安装的nginx的conf目录下,只有一个nginx.conf文件,当项目多了之后,非常不便于管理,我们常用的做法是新建一个conf.d目录,然后让nginx加载配置时候一并把这个目录下的配置文件都加载上!

1、在nginx目录下,创建conf.d文件夹:

[root@master conf]# mkdir /usr/local/nginx/conf.d
[root@master conf]# chmod 777 /usr/local/nginx/conf.d

2、在nginx主配置文件倒数第二行http代码块内增加一行配置:

include /usr/local/nginx/conf.d/*.conf;

3、在conf.d目录下增加一个具体项目的配置文件:

[root@master ~]# cd /usr/local/nginx/conf.d/

[root@master conf.d]# vim iotplat.conf

upstream iotplat {
   server 10.130.41.15;
   server 10.130.59.49;
}

server {
   listen 80;
   # server_name localhost;
   server_name iotplat.cosmoplat.com;
   location / {
      proxy_pass http://iotplat;
      proxy_set_header Host iotplat.cosmoplat.com;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
   }
}

4、最后重新加载nginx配置即可生效:

nginx -s reload

六、为已经安装的nginx增加SSL模块:

1、首先查看,是否安装了SSL模块:

[root@master local]# nginx -V
nginx version: nginx/1.20.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)

2、进入nginx原安装模块,重新带后缀执行./configure命令:

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

3、再执行make命令,注意,此时不要执行make install命令,否则就是覆盖安装:

make

4、停止运行原nginx:

nginx -s stop
# nginx -s quit

5、使用当前目录下的objs目录下的nginx命令覆盖原nginx命令:

cp ./objs/nginx /usr/local/nginx/sbin/

6、重启nginx,并查看-V:

# 重启nginx
[root@master nginx-1.20.2]# nginx

[root@master nginx-1.20.2]# nginx -V
nginx version: nginx/1.20.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

可见此时SSL模块已经安装完成。其它模块同理!

jiguiquan@163.com

文章作者信息...

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐