Centos7下Nginx的安装与配置
一、安装
1、下载
nginx官网下载地址,下载nginx-1.20.2.tar.gz,并将其上传至centos,我这里上传到了/usr/local/src/目录下
2、解压
cd /usr/local/src/
tar -zxvf nginx-1.20.2.tar.gz
解压后,会多个nginx-1.20.2目录
3、依赖安装
# 依赖yum安装
yum install -y openssl-devel pcre-devel gcc
4、Nginx编译安装
# 切换到nginx-1.20.2目录
cd nginx-1.20.2/
# 预编译,默认安装位置/usr/local/nginx
./configure
# 安装
make & make install
# 安装默认位置为/usr/local/nginx
5、启动
# 切换到sbin目录
cd /usr/local/nginx/sbin
# 执行
./nginx
# ----------其他命令-------------
# 停止
./nginx -s stop
# 退出
./nginx -s quit
# 重启
./nginx -s reload
# ----------其他命令-------------
6、访问
默认80端口,浏览器访问http://你的ip,如果出现**Welcome to nginx!**字样,则恭喜你,Nginx基本的安装已经完成。
接下来我们解决几个小问题 开机自启动 ,任意位置执行nginx命令
优化一、开机自启动
# 修改
vi /etc/rc.local
# 追加一行,保存退出
/usr/local/nginx/sbin/nginx
# 添加执行权限
cd /etc
chmod 755 rc.local
重启尝试浏览器访问nginx,如果出现**Welcome to nginx!**字样,则恭喜你,开机自启动好了哦。
优化二、任意位置执行nginx命令
默认启停需要到nginx的sbin目录,或者带完整目录,这样有点麻烦哦,我们配下环境变量,直接nginx即可
# 编辑
vi /etc/profile
# 文末追加环境变量,保存退出
export NGINX_HOME=/usr/local/nginx/sbin
export PATH=$NGINX_HOME:$PATH
# 执行如下命令,让环境变量生效
source /etc/profile
# 尝试如下命令,试试是否成功即可
nginx -s stop
nginx
nginx -s reload
二、配置文件
nginx.conf配置文件在/usr/local/nginx/conf下,配置属性说明如下
# 指定nginx运行用户
#user nobody;
# 工作进程个数
worker_processes 1;
# 错误日志
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
# 进程号
#pid logs/nginx.pid;
events {
# 指定当前一个Worker进程同时可以接受的最大连接数
worker_connections 1024;
}
http {
# 引用文件类容
include mime.types;
# 访问Nginx无法访问的内容,触发下载
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;
# 当建立TCP连接后,多长时间无动作自动断开
#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;
}
}
}
四、常用功能
1、静态网站代理
server {
listen 80;
server_name www.xxx.com;
root /html/test;
index index.html;
}
2、反向代理
server {
listen 80;
server_name localhost
location / {
proxy_pass http://192.168.5.6:12301/; # 注意斜杠
proxy_set_header HOST $host; # 在代理过程中添加host头部信息
proxy_http_version 1.1; # http版本配置,1.0 版本不支持长连接
}
}
3、多配置文件管理
如果所有项目配置都在nginx.conf中配置,则会导致nginx.conf配置文件过于臃肿,可以按项目写配置文件,并导入主配置文件
http {
# ***
include [conf下自定义的目录]/*.conf;
# ***
}
自定义目录下放着所有server.conf,如:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
#location / {
# root html;
# index index.html index.htm;
#}
location / {
proxy_pass http://192.168.5.6:12301;
proxy_set_header HOST $host; # 在代理过程中添加host头部信息
proxy_http_version 1.1; # http版本配置,1.0 版本不支持长连接
}
#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;
}
}
4、一个端口代理多个项目
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
location /demo1/ {
proxy_pass http://192.168.5.6:12301/;
proxy_set_header HOST $host; # 在代理过程中添加host头部信息
proxy_http_version 1.1; # http版本配置,1.0 版本不支持长连接
}
location /demo2/ {
proxy_pass http://192.168.5.6:12302/;
proxy_set_header HOST $host; # 在代理过程中添加host头部信息
proxy_http_version 1.1; # http版本配置,1.0 版本不支持长连接
}
#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;
}
}
5、负载均衡
-
简单示例 upstream us_demo {
server 192.168.5.6:12301 weight=3;
server 192.168.5.6:12302 weight=1;
}
server {
# ***
#
location /demo/ {
proxy_pass http://us_demo/;
proxy_set_header HOST $host; # 在代理过程中添加host头部信息
proxy_http_version 1.1; # http版本配置,1.0 版本不支持长连接
}
#
# ***
}
-
负载均衡的几种方式 # 负载均衡方式一:轮询。每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
upstream us_demo {
server 192.168.5.6:12301;
server 192.168.5.6:12302;
}
# 负载均衡方式二:权重。指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况
upstream us_demo {
server 192.168.5.6:12301 weight=3;
server 192.168.5.6:12302 weight=1;
}
# 负载均衡方式三:ip_hash。每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题
upstream us_demo {
ip_hash;
server 192.168.5.6:12301;
server 192.168.5.6:12302;
}
# 负载均衡方式四:fair(第三方)。按后端服务器的响应时间来分配请求,响应时间短的优先分配
upstream us_demo {
server 192.168.5.6:12301;
server 192.168.5.6:12302;
fair;
}
# 负载均衡方式五:url_hash(第三方)。按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效
upstream us_demo {
server 192.168.5.6:12301;
server 192.168.5.6:12302;
hash $request_uri;
hash_method crc32;
}
-
负载均衡 server后缀状态说明 # 1.down 表示单前的server暂时不参与负载
# 2.weight 默认为1.weight越大,负载的权重就越大。
# 3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
# 4.fail_timeout:max_fails次失败后,暂停的时间。
# 5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
upstream bakend{
server 192.168.5.6:12301 down;
server 192.168.5.6:12302 weight=2;
server 192.168.5.6:12303 max_fails=3;
server 192.168.5.6:12304 fail_timeout=1000;
server 192.168.5.6:12305;
server 192.168.5.6:12306 backup;
}
|