Nginx配置

2023-11-05

Nginx配置

一、nginx常用配置命令

配置命令路径

/usr/local/nginx/sbin

查看nginx版本

./nginx -v

停止nginx服务

./nginx -s stop

启动nginx服务

./nginx

重新加载nginx,适用于当nginx.conf配置文件修改后,使用下面命令可以使得配置文件生效

./nginx -s reload

查看nginx服务是否运行

netstat -ntlp

在这里插入图片描述

二、nginx配置文件

由三部分组成

(一)、第一部分:全局块

nginx服务器全局生效的配置命令

worker_processes  1;   # 服务器并发处理能力,值越大并发能力越强(受自身配置限制)

(二)、第二部分:events块

影响nginx和用户网络的连接

worker_connections  1024;  #最大连接数1024个,需灵活配置

(三)、第三部分:http块

nginx配置最频繁的部分,比如代理,日志,缓存、第三方模块等等。
需要注意的是http块可以包括http全局块和server块

1、http全局块

包括文件引入、MIME-TYPE定义,日志自定义、连接超时等等

http {
    include       mime.types;      #文件扩展名与文件类型映射表
    default_type  application/octet-stream;  # 访问到未定义的扩展名的时候,就默认为下载该文件

2、server块

与虚拟主机有密切关系,主要是为了节省硬件成本
一个http块可以包含多个server块,而一个server块就等于一个虚拟主机
server块又包含全局server块和location块
全局server块

server {
    listen       8012;       #  目前监听的端口号
    server_name  localhost;  # 主机名称

3、location块

   location / {     #表示默认首页
            root   html;
            index  index.html index.htm;

三、nginx配置反向代理

(一)、预计实现的效果

1、访问URL http://www.giunwr.cn:8012/xxx(不包括下面2种情况) 内部跳转到tomcat服务器8080端口
2、访问http://www.giunwr.cn:8012/8080/xxx 内部跳转到 http://www.giunwr.cn:8080/xxx
3、访问 http://www.giunwr.cn:8012/8081/xxx 内部跳转到 http://www.giunwr.cn:8081/xxx

(二)、前期准备

安装tomcat服务(需要安装2个,一个8080端口,一个8081端口)
下载tomcat,如果链接404,就到官网下再找个

wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.16/bin/apache-tomcat-10.0.16.tar.gz

在这里插入图片描述

安装过程

tar -zxvf  apache-tomcat-10.0.16.tar.gz # 解压
cd apache-tomcat-10.0.16  # 进入tomcat主目录
cd bin  # 进入bin目录
./startup.sh   # 启动tomcat服务

在这里插入图片描述
如果jdk报错
安装命令如下

yum -y install java-1.8.0-openjdk*

在这里插入图片描述

查看tomcat服务是否正常运行

cd logs/        #   进入日志路径
tail -f catalina.out    # 查看 tomcat运行日志

在这里插入图片描述
内网环境测试
可以正常访问
在这里插入图片描述
外网环境测试
emmm, 忘记开防火墙了(放行8080端口)
在这里插入图片描述
放行8080端口后,
访问URL http://www.giunwr.cn:8012
外网测试成功
在这里插入图片描述
修改tomcat默认端口
修改配置文件server.xml

apache-tomcat-10.0.16/conf   # 配置文件路径

在这里插入图片描述
在这里插入图片描述
测试文件的准备
在webapps目录下创建相关的html文件
在这里插入图片描述

(三)、实现反向代理

修改nginx.conf文件

 vim /usr/local/nginx/conf/nginx.conf

其中 ~ 表示正则匹配,优先级高于/
在这里插入图片描述

修改好后记得重新加载配置文件

 ./nginx -s reload

在没有防火墙的情况下访问成功
在这里插入图片描述
关闭防火墙,再进行测试
直接访问8080端口直接报错
在这里插入图片描述
访问8012端口,访问成功,说明这个命令只是在服务器内部做代理,并没有走公网。

proxy_pass http://127.0.0.1:8080

在这里插入图片描述
访问http://www.giunwr.cn:8012/8080/xxx 内部跳转到 http://www.giunwr.cn:8080/xxx

在这里插入图片描述
访问 http://www.giunwr.cn:8012/8081/xxx 内部跳转到 http://www.giunwr.cn:8081/xxx
在这里插入图片描述

四、nginx配置负载均衡

(一)、预期效果

浏览器输入地址http://www.giunwr.cn:8012/test/a.html,大概平均分配到8080和8081端口的tomcat服务器,实现负载均衡。
默认分配测试是轮询

(二)、前期准备

1、准备2台tomcat服务,一个端口为8080,一个端口为8081
2、2台服务器都需要在webapps目录下创建目录test,并在目录test里面创建a.html

(三)、实现功能

修改nginx配置文件
在http块中修改

upstream myserver {
    server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
server {
    listen       8012;
    server_name  localhost;
    location / {
        root   html;
    proxy_pass http://myserver;
        i

在这里插入图片描述
其中upstream在http块里面。myserver为自定义的名称
多访问几次URLhttp://www.giunwr.cn:8012/test/a.html,可以发现几乎是8080的tomcat服务和8081的tomcat服务器之间来回访问

 for ((i=1;i<5;i++));do curl  'http://www.giunwr.cn:8012/test/a.html' ;done

在这里插入图片描述

(四)、负载均衡的分配策略

1、轮询(默认就是这种策略)

按请求时间逐一分配,如果某个服务器挂了,就自动剔除

2、weight(权重)

默认weight值是1,值越大表示权重越大,分配到的几率也就越大
当后端服务器性能不均时候,可以考虑该策略
示例

upstream myserver {
    server 127.0.0.1:8080 weight=5;
	server 127.0.0.1:8081 weight=10;
}

3、ip_hash

每个请求按访问ip的hash结果分配,这样子访客固定访问一个后端服务器,可以解决session问题
举个例子:
A用户固定ip,第一次访问到8080tomcat,那么后面就都是访问到这台机器
示例

upstream myserver {
    ip_hash;
    server 127.0.0.1:8080;
	server 127.0.0.1:8081;
}

4、fair(第三方)

根据后端响应时间来分配请求,需要时间短的优先分配
示例
示例

upstream myserver {
    server 127.0.0.1:8080;
	server 127.0.0.1:8081;
	fair;
}

五、nginx配置动静分离

(一)、预期效果

nginx适合处理静态界面(或者说静态请求),
tomcat适合处理动态界面(或者说动态请求)
动静分离的方式:
1、静态文件一个域名,放在独立的服务器中
2、混合发布,使用nginx分离
通过location指定不同后缀名实现不同的请求和转发。比如expires头部,用于设置过期时间

这边使用第一种方案

(二)、前期准备

准备静态资源
在这里插入图片描述

(三)、配置与实现

配置

location /www/ {
    root   /data/;
    index  index.html index.htm;
}
location /txt/ {
        root   /data/;
        # 列出当前目录的下的资源
        autoindex  on;
    }

在这里插入图片描述
实现效果
在这里插入图片描述
在这里插入图片描述

六、第三方模块stub_status安装

(一)、安装步骤

1、查看是安装该模块(默认不安装)需要进入nginx目录下的sbin目录

[sbin]# ./nginx -V 2>&1|grep stub_status

如果内容为空,即没有安装
3、查看当前已经安装的模块

./nginx -V

在这里插入图片描述在这里插入图片描述

4、重新配置参数
在原来的参数基础上加上 with-http_stub_status_module

./configure --prefix=/usr/local/nginx --pid-path=/var/local/nginx/nginx.pid --lock-path=/var/local/nginx/nginx.lock --error-log-path=/var/local/nginx/error.log --http-log-path=/var/local/nginx/access.log --with-http_gzip_static_module --with-http_stub_status_module --http-client-body-temp-path=/var/local/nginx/client --http-proxy-temp-path=/var/local/nginx/proxy --http-fastcgi-temp-path=/var/local/nginx/fastcgi --http-uwsgi-temp-path=/var/local/nginx/uwsgi --http-scgi-temp-path=/var/local/nginx/scgi

在这里插入图片描述
5、做好备份

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

6、重新编译
注意只需要编译即可

make

7、替换掉原来的二进制nginx文件
在nginx安装目录下的objs目录里面

cp /root/wr/nginx-1.20.2/objs/nginx /usr/local/nginx/sbin/

(二)、配置与实现

1、配置简单的监控功能
在server块里面写入下面配置命令

location /nginx_status {
        stub_status;
        allow all;
}

在这里插入图片描述
2、重新启动nginx

./nginx -s reload

3、实现效果
访问http://主机地址/nginx_status即可
在这里插入图片描述
参数参考文档
active connections – 活跃的连接数量
server accepts handled requests — 总共处理了xxx个连接 , 成功创建xxx次握手, 总共处理了xxx个请求
reading — 读取客户端的连接数.
writing — 响应数据到客户端的数量
waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接.

(三)、遇到的问题

1、无法替换二进制nginx文件
在这里插入图片描述
原因是nginx服务器还在运行,需要停止nginx

./nginx -s stop

2、重新加载nginx报错
nginx: [error] open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or directory)
在这里插入图片描述
解决办法,重新指定一下nginx配置文件

./nginx -c /usr/local/nginx/conf/nginx.conf

在这里插入图片描述

七、nginx压缩模块

在http模块里面开启压缩

gzip  on;    #开启压缩响应
gzip_http_version 1.1;  # 只针对http1.1进行压缩
gzip_comp_level 9;      # 压缩等级为9
gzip_types text/plain;  # 压缩类型为文本

其他具体参数可以参考文档
参考文档:https://www.jb51.net/article/146413.htm

八、https配置

1、先判断是否又ssl模块,可参考第六大点
2、这边已安装过ssl模块(–with-http_ssl_module)
修改配置文件,添加server模块接即可,

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nginx配置 的相关文章

  • Nginx 中 uwsgi_pass 和 proxy_pass 的区别?

    我在 Nginx 后面运行 uWSGI 并一直在使用proxy pass让 Nginx 访问 uWSGI 切换到有什么好处吗uwsgi pass 如果是这样 那是什么 uwsgi pass使用一个uwsgi协议 proxy pass使用普通
  • Django + uwsgi + ngnix + 调试关闭 = 服务器错误(500)

    我正在尝试设置一个由 Django uwsgi Nginx 组成的生产服务器 我正在关注的教程位于此处http www panta info blog 3 how to install and configure nginx uwsgi a
  • NGINX hashbang 重写

    我想知道 hashbang url 的位置或重写 nginx 指令会是什么样子 基本上像前端控制器一样通过 hashbang 路由所有非 hashbanged url 所以 http example com about staff 将路由至
  • 将代码从 htaccess 重写为 nginx 配置?

    我在将 htaccess 文件中的重写代码实现到 nginx 配置中时遇到问题 我已经尝试过生成器 http winnginx com htaccess http winginx com htaccess用于生成我的重写 代码 我的ngin
  • 常规请求期间 Django AJAX 请求未通过

    我有一个带有登录网页的 Django 站点 当提交页面上的登录表单时 它会执行登录视图 该视图会在其中运行一个需要很长时间处理 30秒左右 的函数 因此 为了在登录期间向客户端显示进度 一旦提交表单 登录页面上的 JS 函数就会开始向服务器
  • Nginx merge_slashes 重定向

    我在我的 Java 应用程序中使用 nginx 我的问题是 nginx 正在合并斜杠 我无法将我的网站重定向到正确的版本 例如 http goout cz cs koncerty praha 被合并到 http goout cz cs ko
  • Rails/Nginx 中的超时——最佳实践

    我正在开发一个应该在 Nginx 服务器上运行的 Rails 应用程序 根据输入 应用程序可能需要很长时间来处理请求 或者在出现错误时挂起 因此我想防止进程永远运行 除了确保客户端收到超时信号的 Nginx 配置之外 我想我可能仍然需要确保
  • Logrotate - nginx 日志不在 docker 容器内旋转

    我有一个运行 nginx 的 docker 容器 它正在将日志写入 var log nginxLogrotate 安装在 docker 容器中 并且 nginx 的 logrotate 配置文件已正确设置 尽管如此 logrotate 仍不
  • 连接被拒绝:当uwsgi和nginx在不同容器中时

    我正在尝试设置两个 docker 容器 是的 无需 docker compose 分开 一个带有 nginx 另一个带有带有基本 Flask 应用程序的 uwsgi 我在 docker 内的同一网络中运行容器我的 nginx 配置已添加 链
  • 上游太大 - nginx + codeigniter

    我从 Nginx 收到此错误 但似乎无法弄清楚 我正在使用 codeigniter 并使用数据库进行会话 所以我想知道标题怎么会太大 有没有办法检查标题是什么 或者看看我能做些什么来修复这个错误 如果您需要我提供任何conf文件或其他文件
  • PHP cURL 在本地工作,在 AWS 服务器上出现错误 77

    最新更新 脚本作为管理员用户通过 SSH shell 作为 php script php 成功运行 当由 nginx 用户运行时 curl 命令无法执行 https 请求 所以我猜测这是nginx用户无法正确使用curl的问题 我已经检查了
  • 阻止 ingress-nginx 负载均衡器上的特定路径

    我有许多指向入口控制器 IP 的域 我想阻止所有域 站点的 特定路径 有没有办法做到这一点 我可以用nginx ingress kubernetes io configuration snippet 对于每个站点 但正在寻找同时处理所有站点
  • 为什么我会收到 ElasticBeanstalk::ExternalInitationError?

    我的应用程序基于 RubyOnRails 构建 并使用乘客部署为弹性 beanstalk 应用程序 我尝试向 nginx 服务器添加标头并重新启动它 这是我的配置文件 是 aws elastic beanstalk 中 ebextensio
  • Nginx url 限制 502 网关

    我有一个问题 但我接受绕过此功能的其他建议 基本上 我在 get 请求中向我的服务器发送大约 3000 个字符的大行文本 然后服务器将其作为 url 中的参数发送到谷歌翻译 问题 当 url gt 1900 个字符时 Nginx 会抛出 5
  • 重定向而不是 404 错误页面 - 状态代码不起作用 (Nginx)

    我目前正在迁移到 nginx 服务器 我尝试将其放入名为的 404 ErrorDocument 中404 php 如果我现在尝试访问http mydomain com 404 php 这按预期工作 它将我重定向到 Google 但是一旦我尝
  • 使用代理协议的 kubernetes nginx 入口最终出现损坏的标头

    我尝试使用代理协议在 google 容器上设置 nginx 入口 nodeport 以便可以将真实 IP 转发到后端服务 但最终导致标头损坏 2017 02 05 13 48 52 error 18 18 2 broken header H
  • nginx + php-fpm = 找不到文件

    当我尝试访问时info php我得到一个File not found error 我尝试了一些教程但无济于事 配置 默认 server listen 80 listen 80 default ipv6only on server name
  • uWSGI nginx 错误:连接到上游时 connect() 失败(111:连接被拒绝)

    我在 nginx 上访问我的 IP 时遇到 502 网关错误 http 52 xx xx xx http 52 xx xx xx 日志只是这样说的 2015 09 18 13 03 37 错误 32636 0 1 连接到上游时失败 111
  • 如何列出 nginx 中的所有虚拟主机

    有没有一个命令可以列出 CentOS 上 nginx 下运行的所有虚拟主机或服务器 我想将结果通过管道传输到文本文件以用于报告目的 我正在寻找与我用于 Apache 的命令类似的命令 apachectl S 2 gt 1 grep 端口 8
  • Nginx 作为负载均衡器,具有 75% 和 25% 加权路由

    我是 Nginx 新手 我有两台服务器 serverA 和 serverB 我希望 75 的请求发送到 serverA 其余 25 的请求发送到 serverB 这可能吗 使用nginx加权路由 stream upstream stream

随机推荐

  • this.el_.vjs_getProperty is not a function

    前言 在使用video js播放rtmp视频中切换页面 如果是弹框引入 关闭弹框时 必然会发现控制台报错这个 这是谈谈我这边遇到的这个问题 以及怎么解决的 问题 在说这个问题怎么解决之前 先说一下我这边的应用场景 以及遇到的问题 我这边使用
  • 高端大气的艺术海报的ps教程

    Step 1海报尺寸宽和高为768 1152像素 分辨率150像素 英寸 背景白色 Step 2 确定了之后复制背景图层 双击图层进入图层样式 选择渐变叠加 颜色渐变绿色到蓝色 线性渐变 Step 3 用椭圆工具绘制正圆填充颜色白色 大小为
  • 竞赛——【蓝桥杯】2022年11月第十四届蓝桥杯模拟赛第一期Java

    1 二进制位数 问题描述 十进制整数 2 在十进制中是 1 位数 在二进制中对应 10 是 2 位数 十进制整数 22 在十进制中是 2 位数 在二进制中对应 10110 是 5 位数 请问十进制整数 2022 在二进制中是几位数 答案提交
  • 外网访问内网kafka无法链接

    根据业务需要 需要在外网访问内网的kafka 外网设备给内网推送数据 以为只需要通过NGINX代理kafka的端口就可以了 但是实际上端口代理后 端口可以链接 但是无法推送数据 猜测大概原因是因为 kafka是将链接信息注册到zookeep
  • 香港Web3欲戴王冠,银行如何承受合规之重?

    前言 6月19日 据明报报道 香港金融管理局 HKMA 总裁余伟文针对虚拟资产交易平台在香港银行开户难问题表示 一向有与香港银行有交流 交流时是否有压力则大家感觉不一 上周四 HKMA向汇丰银行 渣打银行和中国银行施压 要求其接受加密交易所
  • 后钢板弹簧吊耳—铣叉口两内侧面夹具设计

    摘 要 本次设计是对后钢板弹簧吊耳零件的加工工艺规程及一些工序的专用夹具设计 后钢板弹簧吊零件的主要加工表面是平面及孔 由加工工艺原则可知 保证平面的加工精度要比保证孔的加工精度容易 所以本设计遵循先面后孔的原则 并将孔与平面的加工明确划分
  • mysql中LEFT JOIN分页时的优化方法

    引言 查询的时候使用LEFT JOIN 配合分页要怎么优化 正文 常见的 分页SQL SELECT FROM table1 t1 LEFT JOIN table2 t2 ON t2 id t1 id LEFT JOIN table3 t3
  • 双点双向重发布小实验

    要求 1 如图搭建网络拓扑 所有路由器各自创建一个环回接口 合理规划IP地址 2 R1 R2 R2 R4 R6之间运行OSPF协议 R4 R5 R6之间运行RIP协议 3 R1环回重发布方式引入OSPF网络 4 R4 R6双点双向重发布 5
  • 华为OJ(记负均正)

    描述 从输入任意个整型数 统计其中的负数个数并求所有非负数的平均值 输入 输入任意个整数 输出 输出负数个数以及所有非负数的平均值 注意 当输入的数字的个数未知时 ivec的用法 以 0结束输入 样例测试 输入 13 4 7 输出 3 0
  • 20230904 QT客户端服务器搭建聊天室

    Ser cpp include app h include ui app h APP APP QWidget parent QWidget parent ui new Ui APP ui gt setupUi this this gt re
  • 设置git bash打印log的颜色

    在git安装目录下的 gitconfig文件中编辑 color diff auto status auto branch auto interactive true ui true alias hist log color graph pr
  • 人工智能正在重塑生产方式、优化产业结构、提升生产效率、赋能千行百业

    近日 清华大学科技情报大数据挖掘与服务系统平台AMiner发布 人工智能发展报告2011 2020 阐述过去十年人工智能取得的重要成果 探讨人工智能未来发展前景与蓝图 含此在内 多项人工智能研究报告均引发业界广泛关注 专家表示 作为引领新一
  • 如何方便的去除返回Date时间戳后面的0(或者做其他设置)

    这是get请求后 返回个前端的时间戳 可以看到后面有三个的0 如何去除这0呢 但我们在java里面返回的类又是date 有两个方法 一 重新定义返回视图对象 将createTime 和 updateTime定义为long 然后在赋值的时候更
  • DataGridView控件用法(二):为每行记录最后加“编辑”-“删除”按钮列

    1 在DataGridView控件用法 一 中已经显示出列表数据 这时我们需要对每行数据记录进行编辑 需要添加 编辑 删除 查看 这样的超链接 代码如下 view source print 1 为每行数据增加编辑列 2 设定列不能自动作成
  • Ansible自动化运维详细教程及playbook详解

    Ansible 一种集成 IT 系统的配置管理 应用部署 执行特定任务的开源平台 是 AnsibleWorks 公司名下的项目 该公司由 Cobbler 及 Func 的作者于 2012 年创建成立 Ansible 基于 Python 语言
  • Kafka3.0.0版本——消费者(消费者组原理)

    目录 一 消费者组原理 1 1 消费者组概述 1 2 消费者组图解示例 1 3 消费者组注意事项 一 消费者组原理 1 1 消费者组概述 Consumer Group CG 消费者组 由多个consumer组成 形成一个消费者组的条件 是所
  • vue3+vite配置全局scss

    首先下载scss sass loader sass npm install save dev sass loader npm install save dev node sass npm install save dev sass 打开vi
  • 西门子博图指令(定时器操作四)

    定时器功能指令介绍四 综述 加载脉冲定时器持续时间 介绍 程序 程序演示 加载接通延时定时器持续时间 介绍 程序 程序演示 加载关断延时定时器持续时间 介绍 程序 程序演示 加载时间累加器持续时间 介绍 程序 程序演示 源程序 综述 主要介
  • R语言 删除空行

    data lt data complete cases data 5 6 删除第五六列有空值的行 data lt na omit data 删除有空值的行 转载于 https www cnblogs com shilo930 p 11057
  • Nginx配置

    Nginx配置 一 nginx常用配置命令 二 nginx配置文件 一 第一部分 全局块 二 第二部分 events块 三 第三部分 http块 1 http全局块 2 server块 3 location块 三 nginx配置反向代理 一