Nginx 超详细讲解以及安装

Nginx 超详细讲解以及安装

1.配置说明

Nginx 服务器的配置信息主要集中在 “nginx.conf” 这个配置文件中(默认为 /usr/local/nginx/conf/nginx.conf),所有的可配置项主要为以下几点:

# 运行用户
user nobody; 

# 工作进程:数目。根据硬件调整,通常等于 CPU 数量或者 2 倍于CPU。
worker_processes  1;

# 全局错误日志
error_log /var/log/nginx/error.log;

# pid (进程标识符):存放路径
pid       /usr/local/nginx/logs/nginx.pid;

# 用于指定一个进程可以打开最多文件数量的描述
worker_rlimit_nofile

#设定http服务器,利用它的反向代理功能提供负载均衡支持
enents {

# 指定最大可以同时接收的连接数量,这里一定要注意
# 最大连接数量是和 worker_processes 共同决定的,理论上是 
# worker_processes*worker_connections
worker_connections

# 配置指定 nginx 在收到一个新连接通知后尽可能多的接受更多的连接
multi_accept

# 配置指定了线程轮询的方法,如果是 linux2.6+,使用 epoll,如果是 BSD 如 Mac 请使用 Kqueue
use epoll
}

http {
# 配置 on 让 sendfile 发挥作用,将文件的回写过程交给数据缓冲去完成,而不是放在应用中完成,这样的话在性能提升有有好处
sendfile on
    
# 让 nginx 不要缓存数据,而是一段一段发送,如果数据的传输有实时性的要求的话可以配置它,发送完一小段数据就立刻能得到返回值,但是不要滥用哦
tcp_nodelay on

# 给客户端分配连接超时时间,服务器会在这个时间过后关闭连接。一般设置时间较短,可以让 nginx 工作持续性更好
keepalive_timeout 10

# 设置请求头的超时时间
client_header_timeout 10

#设置请求体的超时时间
client_body_timeout 10

#指定客户端响应超时时间,如果客户端两次操作间隔超过这个时间,服务器就会关闭这个连接
send_timeout 10

# 指定在当前文件中包含另一个文件的指令
include /etc/nginx/mime.types

# 设置存储访问记录的日志
access_log logs/access.log

# 设置存储记录错误发生的日志
error_log logs/error.log

# 加密协议
ssl_protocols		TLSv1 TLSv1.1 TLSv1.2; 

# 是否由服务器决定采用哪种加密算法
ssl_prefer_server_ciphers on;

# 是告诉 nginx 采用 gzip 压缩的形式发送数据。这将会减少我们发送的数据量。
gzip om

# 负载均衡
# max_fails为允许请求失败的次数,默认为1
# weight为轮询权重,根据不同的权重分配可以用来平衡服务器的访问率。
upstream myServer{
    # ip_hash;	# 指定请求调度算法,默认是 weight 权重轮询调度,可以指定
    # ip_hash:根据客户端 ip 的 hash 值决定服务器,这样每个 ip 的客户端固定访问一个服务器
	# least_conn:请求将被分配到活动连接数量最少的服务器
	# fair:按后端服务器的响应时间来请求分配,响应时间短的优先分配
	# url_hash:按访问 url 的 hash 结果来分配请求,按每个 url 定向到同一个后端服务器,后端服务器为缓存时比较有效
	
    server 192.168.1.101:8000 weight=2;		#  8000 端口一次, 8001 端口两次。。。循环
    server 192.168.1.102:8001 down;		# 表示该主机暂停服务
    server 192.168.1.103:8002 max_fails=3;	# 表示失败最大次数,超过失败最大次数暂停服务
    server 192.168.1.104:8003 fail_timeout=20s;		# 表示如果请求受理失败,暂停指定的时间之后重新发起请求
    server 192.168.1.105:8004 max_fails=3 fail_timeout=20s;	
	}

# server 模块配置是 http 模块中的一个子模块,用来定义一个虚拟访问主机,也就是一个虚拟服务器的配置信息
server {
        listen         80;
        server_name    localhost 192.168.134.130;
        charset        utf-8;
        access_log     logs/access.log;
        error_log      logs/error.log;
        ......

	# location 模块是 Nginx 配置中出现最多的一个配置,主要用于配置路由访问信息,属于 http 下的 server 下的子模块。
	# 在路由访问信息配置中关联到反向代理、负载均衡等等各项功能,所以 location 模块也是一个非常重要的配置模块。
        location / {		# 表示匹配访问根目录
            root    /nginx/www;		# 用于指定访问根目录时,访问虚拟主机的 web 目录
            index    index.php index.html index.htm;	# 在不指定访问具体资源时,默认展示的资源文件列表
        }

	# 通过反向代理代理服务器访问模式,通过代理配置让客户端访问透明化。
	location / {
    proxy_pass http://localhost:8888;	# 代理的目标,ip 和端口
    proxy_set_header 'X-real-ip $remote_addr';
    proxy_set_header Host $http_host;	# 代理后,添加的 header
		}

	# uWSGI 配置
	location / {
    include uwsgi_params;	#  指定 uwsgi 的配置参数
    uwsgi_pass localhost:8888;	# uWSGI 服务器的 IP 和端口
		}
	# 静态文件
	location /static/ {		#  url 的起始 path
		alias /var/www/test_project/static/;	# 指定服务器的静态文件目录
		}
    }

}

2.安装 Nginx

1、 gcc 安装

yum install gcc-c++

2、 PCRE pcre-devel 安装

yum install -y pcre pcre-devel

3、 zlib 安装

yum install -y zlib zlib-devel

4、 openssl 安装

yum install -y openssl openssl-devel

5、 安装 nginx

wget -c https://nginx.org/download/nginx-1.14.0.tar.gz

6、 下载完成后,进行解压:

tar -zxvf nginx-1.14.0.tar.gz

7、 进入解压后的目录

cd nginx-1.14.0

8、 应用默认配置,执行

# 默认安装
./configure

# 指定一些特定参数的安装
./configure --with-http_ssl_module --prefix="/install/program/nginx" --with-http_stub_status_module

9、 执行编译和安装:

make && make install 

10、查看安装路径:

whereis nginx

路径默认在: /usr/local/nginx

11、常用命令:

# 首先进行nginx安装目录下的 sbin 目录
cd /usr/local/nginx/sbin

# 启动nginx
./nginx

# 停止nginx:
# 此方式停止步骤是待nginx进程处理任务完毕进行停止,推荐这个
./nginx -s quit

# 此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程
./nginx -s stop

# 查看nginx进程
ps aux|grep nginx

# 验证配置文件:
./nginx -t

# 修改了nginx的配置文件,如果需要重新加载配置文件,使用:
./nginx -s reload

12、启动 nginx 后,可以查看端口监听情况

netstat -tlnp

13、关闭 linux 防火墙或者开放 nginx 的端口,在浏览器中访问,即可查看到对应的欢迎页面

在这里插入图片描述

14、设置 nginx 为开机启动

  • 简单方式:
# 编辑文件:
vi /etc/rc.local

# 增加一行
/usr/local/nginx/sbin/nginx

# 设置权限
chmod 755 /etc/rc.local
  • service 方式:

    编写 service 脚本:

vi /usr/lib/systemd/system/nginx.service

填入以下内容:

[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

说明:

  • 以上出现的路径必须是绝对路径
  • ExecStart、ExecReload、ExecStop 3 个分别对应 启动、重新启动、停止
  • PIDFile 对应启动后的 pid 保存文件

设置自启动

systemctl enable nginx.service
  • 2
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值