本篇内容:概述,安装,常用命令,配置文件,demo
一、nginx概述
1.1 常用的web服务器
服务器介绍
Web 服务器分为静态服务器和动态服务器,静态服务器就是处理静态资源的,比如 HTML、CSS、JS,常用的静态服务器有 Apache、Nginx;动态服务器就是处理动态请求的,比如 JSP,Servlet 等,常用的有 Tomcat、Weblogic。
Nginx 是一个高性能的 HTTP 服务器和反向代理服务器,能够支持 5 万个并发连接,内存、CPU 消耗非常低,是基于七层协议的服务。
反向代理
正向代理:代理客户端,即代替客户端与服务器进行通信,服务器将不知道真实的客户端是谁,比如翻墙
反向代理:代理服务端,即代替服务器与客户端进行通信,客户端将不知道真实的服务器是哪台,即nginx
1.2 nginx的原生功能
1.http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器
2.虚拟主机。可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟机。
3.反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会应为某台服务器负载高宕机而某台服务器闲置的情况。
4.正向代理
二、安装与基础命令
2.1通过yum安装(含组件)
系统环境:centOS7.7
Nginx版本:nginx-1.14.0.tar.gz和nginx-1.16.1.tar.gz均可使用
1)gcc
用来编译下载下来的nginx源码
yum install gcc-c++
2)pcre和pcre-devel
PCRE是一个prel库,包括perl兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式; pcre-devel是使用pcre开发的一个二次开发库。
yum install -y zlib zlib-devel
3)zlib
zlib提供了很多压缩和解方式,nginx需要zlib对http进行gzip
yum install -y zlib zlib-devel
4)openssl
openssl是一个安全套接字层密码库,nginx要支持https,需要使用openssl
yum install -y openssl openssl-devel
5)下载nginx
wget http://nginx.org/download/nginx-1.14.0.tar.gz
6)解压nginx
tar -zxvf nginx-1.14.0.tar.gz -C /usr/local
7)cd到文件路径
cd /usr/local/nginx-1.14.0
8)编译nginx
简单版
./configure
复杂版:
./configure --prefix=/usr --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/tem/nginx/client --http-proxy-temp-path=/var/tem/nginx/proxy --http-fastcgi-temp-path=/var/tem/nginx/fcgi --with-http_stub_status_module
9)安装nginx
make && make install
10)启动nginx
nginx -c /etc/nginx/nginx.conf
问题处理
①如果出现[emerg] getpwnam("nginx") failed 错误 执行
useradd -s /sbin/nologin -M nginx
id nginx
②如果出现 [emerg] mkdir() "/var/temp/nginx/client" failed (2: No such file or directory) 错误 执行
sudo mkdir -p /var/tem/nginx/client
③如果您正在运行防火墙,请运行以下命令以允许HTTP和HTTPS通信:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
11)开机自启动
在rc.local增加启动代码即可
vi /etc/rc.local
增加一行
/usr/local/nginx/sbin/nginx
2.2常用命令
cd /usr/local/nginx/ 进入nginx的位置
nginx 启动nginx
nginx -s reload 重新加载(一般用于修改配置文件后)
nginx -s quit 此方式停止步骤是待nginx进程处理任务完毕进行停止。
nginx -s stop 此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。
2.3卸载nginx
1)停止nginx进程
nginx -s stop
2)查找nginx相关文件
find / -name nginx
3)依次删除find查找到的所有目录
比如:
rm -rf /usr/sbin/nginx
4)使用yum清理
yum remove nginx
三、配置文件
3.1最简改配置
仅最简单示范代理springboot项目
springboot项目中推荐做如下配置:
server.port=8081
server.servlet.context-path=/xx
其中server.servlet.context-path属性应每个模块都唯一,以便于nginx做分发
访问地址:http://IP:80/xx/请求地址
nginx配置文件修改部分如下:(配置文件在 /etc/nginx 下)
server {
listen 80;
server_name localhost;
location / {
proxy pass http://101.200.147.88:8080;
#root html;
#index index.html index.htm;
}
location /xx {
proxy_pass http://localhost:8081;
}
}
3.2原始配置文件
主要分为三部分
-
全局块
设置影响nginx服务器整体运行的配置指令
-
events
设置网络相关
http 块
配置具体关系
http全局块
server块
汉字均为笔者添加
#user nobody; #配置用户或者组
worker_processes 1; #允许生成的进程数,推荐为cpu总核心数
#全局错误日志文件。日志输出级别有debug、info、notice、warn、error、crit(由详细->简略)
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid; #指定nginx进程运行文件存放地址
#工作模式及连接数上限
events {
worker_connections 1024; #单个后台 worker process 进程的最大并发链接
数 (最大连接数=连接数*进程数)
}
#设定 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; #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来 输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置 为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常 把这个改成off。
#tcp_nopush on; #防止网络阻塞
#keepalive_timeout 0;
keepalive_timeout 65; #长连接超时时间,单位是秒
#gzip on; #开启gzip压缩输出
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;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# 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;
# }
#}
}
四、demo
自己写个springboot,按照前面的配置搞一下就好!