当前位置:首页 > 服务端 > Nginx配置

Nginx配置

2022年11月07日 16:21:05服务端10

一、nginx常用配置命令

配置命令路径

/usr/local/nginx/sbin

查看nginx版本

./nginx -v

停止nginx服务

./nginx -s stop

启动nginx服务

./nginx

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

./nginx -s reload

查看nginx服务是否运行

netstat -ntlp

Nginx配置 _ JavaClub全栈架构师技术笔记

二、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

Nginx配置 _ JavaClub全栈架构师技术笔记

安装过程

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

Nginx配置 _ JavaClub全栈架构师技术笔记
如果jdk报错
安装命令如下

yum -y install java-1.8.0-openjdk*

Nginx配置 _ JavaClub全栈架构师技术笔记

查看tomcat服务是否正常运行

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

Nginx配置 _ JavaClub全栈架构师技术笔记
内网环境测试
可以正常访问
Nginx配置 _ JavaClub全栈架构师技术笔记
外网环境测试
emmm, 忘记开防火墙了(放行8080端口)
Nginx配置 _ JavaClub全栈架构师技术笔记
放行8080端口后,
访问URL http://www.giunwr.cn:8012
外网测试成功
Nginx配置 _ JavaClub全栈架构师技术笔记
修改tomcat默认端口
修改配置文件server.xml

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

Nginx配置 _ JavaClub全栈架构师技术笔记
Nginx配置 _ JavaClub全栈架构师技术笔记
测试文件的准备
在webapps目录下创建相关的html文件
Nginx配置 _ JavaClub全栈架构师技术笔记

(三)、实现反向代理

修改nginx.conf文件

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

其中 ~ 表示正则匹配,优先级高于/
Nginx配置 _ JavaClub全栈架构师技术笔记

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

 ./nginx -s reload

在没有防火墙的情况下访问成功
Nginx配置 _ JavaClub全栈架构师技术笔记
关闭防火墙,再进行测试
直接访问8080端口直接报错
Nginx配置 _ JavaClub全栈架构师技术笔记
访问8012端口,访问成功,说明这个命令只是在服务器内部做代理,并没有走公网。

proxy_pass http://127.0.0.1:8080

Nginx配置 _ JavaClub全栈架构师技术笔记
访问http://www.giunwr.cn:8012/8080/xxx 内部跳转到 http://www.giunwr.cn:8080/xxx

Nginx配置 _ JavaClub全栈架构师技术笔记
访问 http://www.giunwr.cn:8012/8081/xxx 内部跳转到 http://www.giunwr.cn:8081/xxx
Nginx配置 _ JavaClub全栈架构师技术笔记

四、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

Nginx配置 _ JavaClub全栈架构师技术笔记
其中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

Nginx配置 _ JavaClub全栈架构师技术笔记

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

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头部,用于设置过期时间

这边使用第一种方案

(二)、前期准备

准备静态资源
Nginx配置 _ JavaClub全栈架构师技术笔记

(三)、配置与实现

配置

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

Nginx配置 _ JavaClub全栈架构师技术笔记
实现效果
Nginx配置 _ JavaClub全栈架构师技术笔记
Nginx配置 _ JavaClub全栈架构师技术笔记

六、第三方模块stub_status安装

(一)、安装步骤

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

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

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

./nginx -V

在这里插入图片描述Nginx配置 _ JavaClub全栈架构师技术笔记

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

Nginx配置 _ JavaClub全栈架构师技术笔记
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;
}

Nginx配置 _ JavaClub全栈架构师技术笔记
2、重新启动nginx

./nginx -s reload

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

(三)、遇到的问题

1、无法替换二进制nginx文件
Nginx配置 _ JavaClub全栈架构师技术笔记
原因是nginx服务器还在运行,需要停止nginx

./nginx -s stop

2、重新加载nginx报错
nginx: [error] open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or directory)
Nginx配置 _ JavaClub全栈架构师技术笔记
解决办法,重新指定一下nginx配置文件

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

Nginx配置 _ JavaClub全栈架构师技术笔记

七、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模块接即可Nginx配置 _ JavaClub全栈架构师技术笔记

作者:giunwr
来源链接:https://blog.csdn.net/qq_44105778/article/details/123140841

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/68338.html

标签: Nginx
分享给朋友:

“Nginx配置” 的相关文章

centos7安装nacos2.0.2集群附带nginx配置

centos7安装nacos2.0.2集群附带nginx配置

1、官方网址 官网:https://nacos.io/zh-cn/ Release地址:https://github.com/alibaba/nacos/releases 下载地址:https://github.com/alibaba/nacos/...

【2022最新Java面试宝典】—— Nginx面试题(23道含答案)

目录 1. 什么是Nginx? 2. 为什么要用Nginx? 3. 为什么Nginx性能这么高? 4. Nginx怎么处理请求的? 5. 什么是...

Java高级架构师(一)第36节:Nginx的反向代理模块

Java高级架构师(一)第36节:Nginx的反向代理模块

理解Http正向代理和Http反向代理的区别   Proxy模块,最常用的proxy_pass, Proxy_pass 可以转发请求到其他的浏览器。  # Nginx强项在于负载、反向、动静分离 #  ...

SpringCloud微服务笔记-Nginx实现网关反向代理

SpringCloud微服务笔记-Nginx实现网关反向代理

背景 当前在SpringCloud微服务架构下,网关作为服务的入口尤为重要,一旦网关发生单点故障会导致整个服务集群瘫痪,为了保证网关的高可用可以通过Nginx的反向代理功能实现网关的高可用。 项目源码:https://github.com/taoweidong/Micro-...

解决nginx proxy

为什么cookie 会丢失? 比如说一个没有经过代理的地址 : http://127.0.0.1/project cookie_path:/project 如果按照第二种方式代理 那么地址就是 : http://127.0.0.1/proxy_p...

修改nginx对http请求数据大小限制

修改nginx对http请求数据大小限制

原文地址:https://blog.csdn.net/u014225733/article/details/80811128 主要实现的功能如下: 主要是测试图片的二进制流,通过http的post请求,上传本地图片,在部署服务中,已经将http请求大小限...

安装nginx和nginx-gridfs和mongodb

1.安装依赖包: [root@mongo_rs1 ~]# yum -y install pcre-devel openssl-devel zlib-devel git gcc gcc-c++ [root@mongo_rs1 zhuyr]# gi...

nginx 拦截 swagger 登录

随着微服务的也来越多,每个服务都有单独的文档,那么问题来了,怎么把所有文档整合在一起呢 本方法采用服务器拦截的方式进行处理 首先需要在opt 的主目录中 /opt/ 创建一个新文件 htpasswd此文件的书写格式是用户名:密码每行一个账户并且 密码必须使用函数 crypt...

Nginx部署vue项目

Nginx部署vue项目

步骤一:项目打包 打开vscode终端 在终端输入 npm run build 这时可以看到生成dist文件夹,我们要放在服务器上的文件就在这, 步骤二:配置nginx 找到在官网下载的安装包。 找到下载的安装包...

nginx虚拟主机配置

nginx虚拟主机配置

新版本nginx的配置文件被拆分为若干部分 1、主配置文件为nginx.conf 2、与php相关的是fastcgi_params 3、与python相关的是uwsgi_params 4、...其他配置文件 [PS:首先确保占用80端口的服务被停止,ngi...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。