Nginx
安装
-
安装 pcre 依赖
- 下载依赖包 http://downloads.sourceforge.net/project/pcre/pcre
- 拉取到liunx系统里
- 解压文件 tar -zxvf pcre-8.37.tar.gz
- ./configure 完成后,回到prce目录下执行,最后make install
- 查看依赖是否安装成功 pcre-config --version
-
安装 openssl 、zlib 、 gcc 依赖
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
-
安装 nginx
- 下载依赖包 http://nginx.org/en/download.html
- 拉取到liunx系统里
- 解压文件 tar -zxvf nginx-1.14.2.tar.gz
- 进入 nginx-1.14.2目录,输入./configure 和 make && make install
- 进入/usr/local/nginx/sbin/nginx目录 输入 ./nginx 启动服务
- 输入ps -ef| grep nginx 查看 nginx 启动状态
- 在浏览器输入 ip地址访问nginx,默认访问端口为80,可以在conf/nginx.conf 修改listen 的端口
常用命令
使用nginx操作命令提前条件必须进入nginx目录
- 查看nginx版本号:./nginx -v
- 启动nginx:./nginx
- 停止nginx:./nginx -s stop
- 重新加载nginx:./nginx -s reload
配置文件
vim /usr/local/nginx/conf/nginx.conf
-
配置文件中的内容(包含三部分)
-
全局块: 配置服务器整体运行的配置指令
从配置文件开始到events块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令,主要包括配置运行nginx服务器的用户( 组),允许生成worker process 树,进程PID存放路径,日志存放路径和类型以及配置文件的引入等。
比如上面的第一行配置
worker_processes 1;
这是nginx服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是会收到硬件,软件等设备的制约。
-
events块
比如上面配置
events { worker_connections 1024; }
events块涉及的指令主要影响nginx服务器与用户的网络连接,常用的设置包括是否开启对多 work process下的网络连接进行序列化,是否允许同时接受多个网络连接,选取哪种事件驱动模型来处理连接请求,每个work process 可以同时支持的最大连接数等。
上述例子就表示每个 work process 支持的最大连接数为1024
这部分的配置对nginx的性能影响较大,在实际中应该灵活配置。
-
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 { 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; } } }
这算是 nginx 服务器配置中频繁的部分,代理,缓存和日志定义等绝大多数功能和第三方模块的配置都在这。
需要注意的是:http块也可以包括http全局块,server块。
-
http全局块
http全局块配置的指令包括文件引入,MIME-TYPE定义,日志自定义,连接超时时间,单链接请求数上限等。
-
server块
这块和虚拟主机又密切关系,虚拟主机从用户角度来看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。
每个http块可以包括多个server块,而每个server块就相当于一个虚拟机。
而每个server块也分为全局server块,以及可以同时包含多个location块。
-
全局server块
最常见的配置是本虚拟机主机的监听配置和本虚拟主机的名称或IP配置。
-
location
一个server块可以配置多个location块。
这块的主要作用是基于 nginx 服务器接受到的请求字符串(例如server_name/uri_string),对虚拟主机名称( 也可以是IP别名)之外的字符串(例如前面的/uri-string)进行匹配,对特定的请求进行处理。地址定向,数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。
-
-
-
配置实例 - 反向代理(一)
运行tomcat,打开浏览器输入ip:端口 访问tomcat查看效果。
在虚拟机进入 nginx conf目录,编辑ngxin.conf
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
proxy_pass http://localhost:9090; //这是tomcat的端口
index index.html index.htm;
}
在浏览器输入 ip地址访问nginx,发现nginx转发到tomcat的主页了。
配置实例 - 反向代理(二)
使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中
访问 http://ip/edu/ 直接跳转到 127.0.0.1:9090
访问 http://ip/vod/ 直接跳转到 127.0.0.1:9091
准备两个tomcat服务器,9090,9091端口,这里我用的是docker搭建
准备一个页面里面不同的内容,把页面挂载到docker 容器里面
分别是:
docker cp a.html CONTAINER ID:/usr/local/tomcat/webapps/edu
docker cp a.html CONTAINER ID:/usr/local/tomcat/webapps/vod
修改 nginx配置文件,进行反向代理配置
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
proxy_pass http://localhost:9090; //这是tomcat的端口
index index.html index.htm;
}
location ~ /edu/ {
proxy_pass http://localhost:9090; //这是tomcat的端口
}
location ~ /vod/ {
proxy_pass http://localhost:9091; //这是tomcat的端口
}
}
在浏览器输入 {ip}/vod/a.html 和 {ip}/edu/a.html,发现nginx转发到指定的的页面了。