一、linux 下 nginx 的安装
1.1 下载 nginx 及 pcre 安装包
nginx 下载地址:http://nginx.org/download/nginx-1.13.8.tar.gz
pcre 下载地址:https://sourceforge.net/projects/pcre/files/pcre/8.41/pcre-8.41.tar.gz/download
1.2 pcre 安装
新建安装目录并上传文件
计划将 nginx 安装在/usr/pcre 目录下,新建目录/usr/pcre
cd /usr
mkdir pcre
cd pcre
将下载下来的 Nginx 使用 fileZilla 上传到/usr/pcre 目录(即当前目录)下。
上传 pcre 安装包 pcre-8.41.tar.gz 到/usr/pcre 目录下
解压 pcre 安装包
tar -zxvf pcre-8.41.tar.gz
得到 pcre-8.41 文件夹
对当前文件夹授予全部读写权限:
chmod -R 777 pcre-8.41
初始化配置
切换到/usr/pcre/pcre-8.41 目录下,运行以下命令进行 pcre 初始化配置。
./configure
进行编译
make install
进行安装,至此 PCRE 安装完成。
1.3 nginx 安装
新建安装目录并上传文件
计划将 nginx 安装在/usr/nginx 目录下,新建目录/usr/nginx
cd /usr
mkdir nginx
cd nginx
将下载下来的 Nginx 使用 fileZilla 上传到/usr/nginx 目录(即当前目录)下。
解压 nginx 压缩包
tar -zxvf nginx-1.12.2.tar.gz
得到 nginx-1.12.2 文件夹
初始化配置
切换到/usr/nginx/nginx-1.12.2 目录下,运行 ./configure
进行初始化配置。
cd /usr/nginx/nginx-1.12.2
./configure
如果显示缺少别的支持库。首先安装系统常用支持库。减少安装过程中很多错误的出现。
yum install -y automake make gcc gdb strace gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs patch e2fsprogs-devel krb5-devel libidn libidn-devel openldap-devel nss_ldap openldap-clients openldap-servers libevent-devel libevent uuid-devel uuid mysql-devel
安装完成后重复运行 ./configure
命令进行初始化。
如果显示没有安装 pcre,请先按 2.4.2 步骤安装 pcre。
安装完 pcre 之后,重复运行 ./configure
命令,若提示./configure: error: the HTTP gzip module requires the zlib library.
则需要安装“zlib-devel”即可。执行以下命令:
yum install -y zlib-devel
安装完成,再次运行 ./configure
进行初始化即可。注意这里生成的配置文件,尤其箭头所指的方向,是启动 nginx 时的路径。
进行编译
运行以下命令进行编译:
make install
测试启动、停止、重启
-
启动
/usr/local/nginx/sbin/nginx -c /usr/nginx/nginx-1.12.2/conf/nginx.conf
或
/usr/local/nginx/sbin/nginx
-
停止
#查询 nginx 主进程号
ps -ef | grep nginx
#停止进程
kill -QUIT 主进程号
#快速停止
kill -TERM 主进程号
#强制停止
pkill -9 nginx
-
重启(首次启动需:
/usr/local/nginx/sbin/nginx -c /usr/nginx/nginx-1.12.2/conf/nginx.conf
)/usr/local/nginx/sbin/nginx -s reload
-
测试
#测试端口
netstat -na | grep 80
#浏览器中测试
出现以下画面说明启动正常。
二、nginx 配置
为了避免其他人把未备案的域名解析到自己的服务器 IP,而导致服务器被断网,配置 nginx 将请求分发到内网,同时配置静态文件分离部署。需要对 nginx 进行相关配置。
为保证 nginx 可以使用 80 端口不被占用,外界必须通过 nginx 访问应用,可进行以下配置:
推荐方式一:将 tomcat 部署在本机的非 80 端口下(假设为 8081),且防火墙配置为不开启应用服务器对应端口(如不开启 8081 端口)。
推荐方式二:将 tomcat 部署在内网其他机器上,nginx 通过内网 ip 连接应用服务器。
两种方式都可以支持一个 nginx 配置多个应用的代理。
nginx.conf 配置
在 nginx-1.12.2/conf 目录下,编辑 nginx.conf 文件
cd /usr/nginx/nginx-1.12.2/conf
vi nginx.conf
修改为如下配置:
#user nobody;
worker_processes 1; #工作进程的个数,可以配置多个,建议设置为等于CPU总核心数
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024; #单个进程的最大连接数(该服务器的最大连接数=连接数*进程数)
}
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压缩
#gzip on;
client_max_body_size 50m; #缓冲区代理缓冲用户端请求的最大字节数,可以理解为保存到本地再传给用户
client_body_buffer_size 256k;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
proxy_connect_timeout 300s; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_read_timeout 300s; #连接成功后,后端服务器响应时间(代理接收超时)
proxy_send_timeout 300s;
proxy_buffer_size 64k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传递请求,而不缓冲到磁盘
proxy_ignore_client_abort on; #不允许代理端主动关闭连接
#配置只能指定域名访问,ip不能访问,同时配置动静分离,静态文件缓存等。
include hosts/host1.conf;
}
修改完文件后,按 Esc
键退出文本编辑状态,输入 :wq
确定编辑文本。
新建 host1.conf 文件
在当前目录下新建文件夹 hosts,并在 hosts 文件夹下新建文件 host1.conf
mkdir hosts
cd hosts
touch host1.conf
配置 host1.conf
vi host1.conf
填写为以下内容,并将下文中对应部分替换为自己的信息:
server {
listen 80; #表示当前的代理服务器监听的端口,默认的是监听80端口。
server_name _; #没有匹配到的其他servername
return 403; #过滤其他域名的请求,返回403状态码
}
#对应域名为www.aaa.com的服务
server {
listen 80; #表示当前的代理服务器监听的端口,默认的是监听80端口。
server_name www.aaa.com; #此处配置为允许访问的域名
#实际上我们的需求不会是直接匹配所有路径,我们需要分文件类型来进行过滤,
#html,js,css这些不需要处理的,直接给nginx进行缓存。
#进行一下配置,让JSP页面直接给tomcat,而html,png等一些图片和JS等直接给nginx进行缓存。
#配置静态资源路径。若不做动静分离,此项location配置可删除。
location ~ \.(html|js|css|png|gif|jpg)$ {
root /usr/myProject/aaaa; #此处配置为静态资源所在路径
}
#location: 表示匹配的路径,这时配置了/表示所有请求都被匹配到这里
location / {
#root html; #里面配置了root这时表示当匹配这个请求的路径时,将会在这个文件夹内寻找相应的文件,这里对我们之后的静态文件伺服很有用。
#index index.html index.htm; #当没有指定主页时,默认会选择这个指定的文件,它可以有多个,并按顺序来加载,如果第一个不存在,则找第二个,依此类推。
proxy_pass http://127.0.0.1:8081; #proxy_pass,它表示代理路径,相当于转发,此处配置为内网中应用服务器所在ip及端口。
}
}
修改完文件后,按 Esc 键退出文本编辑状态,输入:wq 确定编辑文本。
配置完成重启 nginx 即可使配置生效。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于