前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx & 安装

Nginx & 安装

作者头像
收心
发布2022-01-14 08:55:03
2680
发布2022-01-14 08:55:03
举报
文章被收录于专栏:Java实战博客

什么是nginx?

Nginx是一款轻量级Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。

能做什么?

Nginx 反向代理、负载均衡、动态分离、集群高可用

优点:

  • Nginx支持高达5w的并发量
  • 避免暴露服务器真实位置(所有请求都到nginx了,nginx代理访问服务器)
  • 解决前端跨域问题(由nginx负责压力)

Nginx是一个高性能的反向代理、Http服务器软件 占用内存少 并发强

Nginx为什么快?

  • nginx是基于epoll模型开发的,而epoll是基于JAVA NIO的同步非阻塞开发,在高并发情况下能支持更多的连接!
  • nginx是事件驱动的,一个主进程跟多个工作进程组成的工作模式,主线程负责循环分配事件,多个工作线程负责事件的处理!

Nginx反向代理含义:

  1. 正向代理:在客户端配置代理服务器,通过代理服务器进行访问资源。依赖代理服务器进行访问资源
  2. 反向代理:客户端对正向代理是无感知的,反向代理可用实现,暴露代理服务器,隐藏真实服务器IP。

Nginx负载均衡含义:

请求作为负载 将请求分发到多台服务器,让多台服务器共同响应,即 服务器按照规则平均分发请求。避免单一服务器响应不过来。

Nginx 动态分离

为了加快服务器的解析速度,可用通过动态(jsp)、静态的资源(html、css、js)分开的方式

Nginx是静态资源服务器,不能够处理动态资源哦,请求到动态资源,可以通过proxy_pass、fastcgi_pass转发

代码语言:javascript
复制
proxy_pass 与fastcgi_pass 有什么共异性?

共同点:
    都作为代理,代理后端服务分发使用
不同点:
    proxy_pass 应用更广泛,支持几乎所有应用 
    fastcgi_pass 后端只能代理fastcgi服务器应用可运行的语言

    proxy_pass   支持(4个) ip、ip:端口、socket、uri

    fastcgi_pass 支持(3个) ip、ip:端口、socket

Nginx 在linux安装

#使用命令去安装

代码语言:javascript
复制
yum install -y nginx

官网下载安装

从官网下载 Linux 安装包

安装一些编译环境与其他依赖 不安装 是无法完整编译的

代码语言:javascript
复制
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

解压命令tar -xvf

代码语言:javascript
复制
tar -zxvf 包名

用来生成 Makefile,为下一步的编译做准备

代码语言:javascript
复制
进入你解压出来的文件夹

下面代码 二选一
只是单纯的nginx 啥也不加的,第一个。如果需要SSL 执行 第二个 。
如果选错错了,make clean 清除一下即可,再次二选一。
./configure 
./configure --with-http_ssl_module  开启SSL模块
./configure --with-stream 开启UDP
./configure --with-http_realip_module 获取客户端的真实IP

可以同时选 如 --ABC --EFG

如果安装成功了,可以通过 /usr/local/nginx/sbin/nginx  -V 查看

安装 make&make install 走一遍(不管爆不爆错,只要最后 install成功就行,如果 不成功,具体还需要百度研究下)

代码语言:javascript
复制
make
make test
make clean
make install

install 后,需要 查看一下当前版本

代码语言:javascript
复制
直接执行下面命令
/usr/local/nginx/sbin/nginx -v

开放80 与 443防火墙端口

代码语言:javascript
复制
 firewall-cmd --zone=public --add-port=80/tcp --permanent
 firewall-cmd --zone=public --add-port=443/tcp --permanent

重启生效防火墙配置

代码语言:javascript
复制
firewall-cmd --reload

卸载

抄自网络,但是 不确保删的干净。烦,具体情况具体对待

代码语言:javascript
复制
删除nginx目录即可 建议使用 whereis nginx 查看一下nginx所在的地址

rm -rf /opt/nginx

(rm -rf /usr/local/nginx)

如果配置了自启动,也需要删除

Nginx常用命令

使用条件必须进入nginx目录中去

即 /usr/lcoal/nginx/sbin目录

代码语言:javascript
复制
cd /usr/local/nginx/sbin/

进入上面的才可以查看Nginx版本号

代码语言:javascript
复制
./nginx -v

启动nginx (不保证Nginx一定能启动 如果服务器安装了Apache 等一些 WEB服务器 可能会端口占用导致无法启动)

代码语言:javascript
复制
./nginx

关闭nginx

代码语言:javascript
复制
./nginx -s stop

重载nginx配置文件

代码语言:javascript
复制
./nginx -s reload 

Nginx的配置文件在

/usr/lcoal/nginx/conf/nginx.conf 或者 /etc/nginx/nginx.config

如果找不到 怎么办?活人是不能让尿憋死的,记得,nginx 自检配置文件,就会打印出来 配置文件的位置

代码语言:javascript
复制
./nginx -t

读取别的配置文件,避免主文件过长

这里说一下 /etc/nginx/nginx.config 配置文件中 引用了其他的配置文件

所以 他还需要去读取 /etc/nginx/conf.d/*.conf 下面的所有文件

正好有个叫 default.conf

配置文件的组成 default.conf 完整的内容

代码语言:javascript
复制
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/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   /usr/share/nginx/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;
    #}
}

所以 他的配置页面在 这里 root /usr/share/nginx/html; 进行读取 index.html

一般来说 Nginx会分成四块

# 注释

由三部分组成

第一块 全局块 配置整体运行的指令

第二块 events块 配置用户连接与网络部分

第三块 Http块 配置最频繁的部分

Http块 包含了http全局块、server块

Server块 与虚拟主机有密接关系

案例 一 代理端口转发

实现的效果:在浏览器输入www.123.com跳转到tomcat

server_name 配置好ip或者域名;

在location填写 proxy_pass http://127.0.0.1:8080;

记得一定要加“;”

代码语言:javascript
复制
Bug分析 Nginx配置完成后 发现无法启动
排除配置文件错误后,一般都是Linux服务器的网络配置导致的
经过近40分钟的排查 最终发现Linux配置的时候,不允许
 
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setsebool -P httpd_can_network_connect 1

案例二 通过不同的访问路径跳转到不同的端口 代理路径端口转发

代码语言:javascript
复制
server{
    listen 80;
    server_name www.abc.com;
    location ^~ /edu/	{	#在webapps下面创建edu里面放个h5即可
        proxy_pass http://127.0.0.1:8080;
    }
    location ^~ /vod/	{	#在webapps下面创建vod里面放个h5即可
        proxy_pass http://127.0.0.1:8081;
    }
}	

案例二 负载均衡

负载分配策略

在linux下有Nginx、LVS、 Haproxy 等等服务可以提供负载均衡服务,而且Nginx提供了几种分配方式(策略):。

1、轮询(默认)

每个请求按时间顺序逐一分配到不 同的后端服务器,如果后端服务器down掉,能自动剔除

2、weight weight代表权重默认为1,权重越高被分配的客户端越多。 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。例如: 。

3、ip hash

每个请求按访问ip的hash结果分配, 这样每个访客固定访问一个后端服务器,可以解诀session的问题。例如:

代码语言:javascript
复制
upstream server pool{
  ip_ hash
  server 192.168.5.21:80
  server 192.168.5.22:80
}

4、dair(第三方)

代码语言:javascript
复制
upstream server_pool 
{
	server 192.168.5.21:80;
	server 192.168.5.22:80;
	fair;
}

日志

代码语言:javascript
复制
# 在Server块添加日志记录,将来日志就会被记录在如下的日志中

    access_log  /www/wwwlogs/www.52zhenliao.com.log;
    error_log  /www/wwwlogs/www.52zhenliao.com.error.log;

特殊说明: 解决问题的光鲜,藏着磕Bug的痛苦。 万物皆入轮回,谁也躲不掉! 以上文章,均是我实际操作,写出来的笔记资料,不会出现全文盗用别人文章!烦请各位,请勿直接盗用!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是nginx?
  • 能做什么?
  • Nginx为什么快?
  • Nginx反向代理含义:
  • Nginx负载均衡含义:
  • Nginx 动态分离:
  • Nginx 在linux安装
  • 官网下载安装
  • 卸载
    • Nginx常用命令
      • 读取别的配置文件,避免主文件过长
        • 一般来说 Nginx会分成四块
          • 案例 一 代理端口转发
            • 案例二 通过不同的访问路径跳转到不同的端口 代理路径端口转发
              • 案例二 负载均衡
                • 日志
                相关产品与服务
                负载均衡
                负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档