—-慢慢来比较快,虚心学技术—-
Nginx知识概览
Nginx是什么?
Nginx 是俄罗斯人编写的十分轻量级的 HTTP 服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个 IMAP/POP3/SMTP 代理服务器。
Nginx是Apache的同行,一种基于REST风格的WEB服务器。
然而,由于Apache年代久远,被设计为一个重量级的服务器,并不支持高并发,大量的访问将导致大量的内存消耗。所以,轻量级高并发服务器Nginx就应运而生了
Nginx有什么用?
处理静态文件,索引文件以及自动索引;打开文件描述符缓冲
无缓存的反向代理加速
简单的负载均衡和容错
作为web服务器
Nginx进程模型
master 进程**:主要用来管理 worker 进程**,包含:接收来自外界的信号,向各 worker 进程发送信号,监控 worker 进程的运行状态,当 worker 进程退出后(异常情况下),会自动重新启动新的 worker 进程。
worker进程**:处理基本的网络事件,各worker进程之间是平等且独立的,一个请求仅会由一个worker进程处理,一个worker进程不可能处理其他worker进程的请求**

实际上,作为管理员仅需要和master进程进行通信,master会去根据管理员的指令去管理worker进程,而worker进程仅用来处理客户端请求
Yum安装Nginx
查看yum源是否存在nginx安装包
yum search nginx

安装nginx
yum -y install nginx

查看nginx安装包
rpm -qa|grep nginx

查看nginx安装文件
rpm -ql nginx-1.12.2-3.el7.x86_64
结果:
/etc主要放置nginx配置文件
/usr/bin放置nginx命令
/usr/lib放置nginx的函数库
/usr/share放置nginx的资源文件如文档和许可
/var放置nginx的动态内容如缓存和日志
/etc/logrotate.d/nginx
/etc/nginx/fastcgi.conf
/etc/nginx/fastcgi.conf.default
/etc/nginx/fastcgi_params
/etc/nginx/fastcgi_params.default
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/mime.types
/etc/nginx/mime.types.default
/etc/nginx/nginx.conf
/etc/nginx/nginx.conf.default
/etc/nginx/scgi_params
/etc/nginx/scgi_params.default
/etc/nginx/uwsgi_params
/etc/nginx/uwsgi_params.default
/etc/nginx/win-utf
/usr/bin/nginx-upgrade
/usr/lib/systemd/system/nginx.service
/usr/lib64/nginx/modules
/usr/sbin/nginx
/usr/share/doc/nginx-1.12.2
/usr/share/doc/nginx-1.12.2/CHANGES
/usr/share/doc/nginx-1.12.2/README
/usr/share/doc/nginx-1.12.2/README.dynamic
/usr/share/doc/nginx-1.12.2/UPGRADE-NOTES-1.6-to-1.10
/usr/share/licenses/nginx-1.12.2
/usr/share/licenses/nginx-1.12.2/LICENSE
/usr/share/man/man3/nginx.3pm.gz
/usr/share/man/man8/nginx-upgrade.8.gz
/usr/share/man/man8/nginx.8.gz
/usr/share/nginx/html/404.html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html
/usr/share/nginx/html/nginx-logo.png
/usr/share/nginx/html/poweredby.png
/usr/share/vim/vimfiles/ftdetect/nginx.vim
/usr/share/vim/vimfiles/ftplugin/nginx.vim
/usr/share/vim/vimfiles/indent/nginx.vim
/usr/share/vim/vimfiles/syntax/nginx.vim
/var/lib/nginx
/var/lib/nginx/tmp
/var/log/nginx
查看nginx运行状态
service nginx status

或:
ps -ef|grep nginx

可以看到,nginx启动会开启master进程和worker进程。事实上,会开启一个master进程和多个worker进程
启动nginx
systemctl start nginx.service
或
service nginx start
查看端口占用情况
netstat -ntlp

Nginx默认占用端口是80
RPM安装nginx
安装nginx依赖包gcc zlib-devel pcre-devel openssl openssl-devel
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel


下载nginx安装包到/usr/src目录下(常作为软件安装包的存放位置)
cd /usr/src
wget http://nginx.org/download/nginx-1.15.8.tar.gz

解压文件
tar xzvf nginx-1.15.8.tar.gz

进入nginx目录并编译执行安装文件
cd /usr/src/nginx-1.15.8

在/**opt创建一个nginx目录**
mkdir /opt/nginx
在/usr/src/nginx-1.15.8执行配置命令,将安装配置指向/opt/nginx
./configure --prefix=/opt/nginx

执行编译命令
cd /usr/src/nignx-1.15.8
make
执行安装命令
make install
进入/opt/nginx目录
cd /opt/nginx
ls

安装完成,删除/usr/src/nginx-1.15.8解压目录
rm -rf /usr/src/nginx-1.15.8
启动nginx
./opt/nginx/sbin/nginx
查看进程信息
ps -ef|grep nginx

重启nginx
./opt/nginx/sbin/nginx -s reload
停止nginx
./opt/nginx/sbin/nginx -s stop
或
./opt/nginx/sbin/nginx -s quit
查验配置文件语法是否正确
./opt/nginx/sbin/nginx -
Nginx配置
查看nginx配置文件
nginx -t

或者
whereis nginx

我们知道,软件安装的系统配置通常都在etc目录下,所以我们直奔主题:
cd /etc/nginx

其中,我们看到有个nginx.conf.default文件,是用来干嘛的呢?
nginx.conf.default是nginx安装完成后生成的默认配置参考文件,可以当作默认配置的备份文件,真正生效的配置是nginx.conf.
我们去配置nginx.conf时可以参考着nginx.conf.default配置项进行配置**
nginx配置文件详解
cat /etc/nginx/nginx.conf
整体结构
|——-全局块 配置影响nginx全局的指令。
|————-events块 配置影响nginx服务器或与用户的网络连接
|————-http块 可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置
|—————-upstream 配置负载服务器池
|—————-server块 配置虚拟主机的相关参数
|————————location块 配置请求的路由,以及各种页面的处理情况。
########### 每个指令必须有分号结束。#################
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx; #配置用户或用户组
worker_processes auto; #worker进程数,默认为auto,建议与cpu核心数相同
error_log /var/log/nginx/error.log debug; #指定日志路径,级别,nginx的日志级别:{debug|info|notice|warn|error|crit|alert|emerg}
pid /run/nginx.pid; #指定nginx进程运行文件路径
# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf; #包含其他的配置文件
#events块,配置影响nginx服务器或与用户的网络连接
events {
#accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on,惊群现象:一个网路连接到来,多个睡眠的进程被同事叫醒,但只有一个进程能获得链接,这样会影响系统性能
#multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off
worker_connections 1024; #每个worker进程的最大连接数
}
#http块,配置代理,缓存,日志定义等绝大多数功能和第三方配置
http {
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 /var/log/nginx/access.log main; #服务日志存放位置及格式
sendfile on; #指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65; #连接超时时间
types_hash_max_size 2048;
include /etc/nginx/mime.types; #设定mime类型,类型由mime.type文件定义
default_type application/octet-stream; #默认mime类型
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf; #http块内引入其他配置
#自定义服务器,跨越单机的限制,完成网络数据的接收、处理和转发 (负载均衡的关键)
upstream mysvr {
server 127.0.0.1:7878;
server 192.168.10.121:3333 backup; #热备
}
#server块,配置虚拟主机的相关参数,一个http中可以有多个server。
server {
listen 80 default_server; #监听端口
listen [::]:80 default_server;
server_name _; #监听地址
root /usr/share/nginx/html; #站点根目录
index index.html index.htm index.php; #首页排序,站点首页
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf; #server块引入其他配置
#location块,配置代理请求的路由,以及各种页面的处理情况
location / {
root /xxx/application/tmp; #拦截路由的根目录
index index.html index.htm; #拦截路由的设置默认页
proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表
deny 127.0.0.1; #拒绝的ip
allow 172.18.5.54; #允许的ip
}
#404异常页面
error_page 404 /404.html;
location = /40x.html {
}
#500 502 503 504异常页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}
检查nginx配置文件语法是否正确
nginx -t

重启nginx
systemctl restart nginx.service
或
service nginx restart
关闭nginx
systemctl stop nginx.service
或
service nginx restart
测试访问示例
配置监听80及8080端口映射到/usr/share/nginx/html目录下的文件**
①修改配置文件,配置如下两个server:
vim /etc/nginx/nginx.conf
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
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 /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
#监听80端口
server {
listen 80 default_server;
#listen [::]:80 default_server;
server_name _;
#root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
#拦截路由 /
location /{
root /usr/share/nginx/html;
index index.html index.html;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
#监听8080端口
server{
listen 8080;
#拦截路由 /
location / {
root /usr/share/nginx/html;
index index.html index.html;
}
}
}
②重启nginx
systemctl restart nginx.service
③防火墙开放端口80及8080
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=8080/tcp --permanent
重启防火墙
systemctl restart firewalld.service
查看防火墙开放端口
firewall-cmd --list-port
查看/usr/share/nginx/html目录下文件
ls /usr/share/nginx/html

④浏览器访问测试

访问http://服务器ip:80/nginx-logo.png


至此,Nginx代理服务器搭建成功!★,°:.☆( ̄▽ ̄)/$:.°★ 。
如有贻误,还请评论指正
