ngix安装与使用
主要是nginx的安装使用, 至于原理
1. 安装nginx(以及两个tomcat)
2. 使用nginx(测试负载均衡)
想要搭建的测试环境,
1.两个tomcat, 端口分别是80和8090(因为之前安装过一次端口为80的tomcat)
2.nginx端口为8088
nginx安装(linux为例)
安装目录都在
/usr/local下.安装包获取, 选取
Stable version下载直接下载, (传入虚拟机或服务器) nginx: download
参考上面地址中的版本通过指令
wget http://nginx.org/download/nginx-1.22.1.tar.gz下载
解压安装
解压:
tar zxvf nginx-1.22.1.tar.gz重命名:
mv nginx-1.22.1 nginx进入目录:
cd ./ngingx编译:
make安装:
make install修改配置文件:
vim ./conf/nginx.conf#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_connections 1024;
} http {
include mime.types;
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; #keepalive_timeout 0;
keepalive_timeout 65; #gzip on;
# 改动1
# 新增一个指令块(请求转发都会转发到这里面), 指向两个tomcat的端口
# weight是权重
upstream myservers {
server 127.0.0.1:80 weight=1;
server 127.0.0.1:8090 weight=1;
} server {
# 改动2
# 端口修改为nginx的端口
# server_name修改为当前机器的ip或域名
listen 8088;
server_name 127.0.0.1; #charset koi8-r; #access_log logs/host.access.log main; # 改动3 将指令块添加到转发规则中
location / {
proxy_pass http://myservers;
proxy_redirect default;
# 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;
} # proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#} # ... 省略
改动1: 添加指令块(名字和改动3中的一致即可)
改动2: 修改间挺端口, 默认80
改动3: 添加请求转发规则(http://后面的名字和改动1中一致)
tomcat安装
下载tomcat安装包, 建议安装8版本的 Apache Tomcat 8 Software Downloads
解压重命名指令同nginx
第一个端口为80的tomcat目录为
tomcat修改端口:
vim ./tomcat/conf/server.conf<!-- 将8080改成80 -->
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
启动80的tomcat,
./tomcat/bin/start.sh第二个端口为8090的tomcat目录为
tomcat8090(再次解压一个新的)修改端口:
vim ./tomcat8090/conf/server.conf主要修改 Server中的port 和 Connector中的port (如果启动失败可百度启动两个不同端口tomcat自行查找问题或者更改更多参数令其完全不同)
<!-- 指定关机时候的端口 8005改成8006 -->
<Server port="8005" shutdown="SHUTDOWN"> <!-- AJP协议端口: 将8080改成8089 -->
<Connector port="8089" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
启动8090的tomcat:
./tomcat8090/bin/start.sh
创建一个测试项目
创建一个只有一个接口的demo项目(maven构件为例)
pom: 因为使用tomcat运行, 我们打包方式改成war, 添加上打包插件<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId>
<artifactId>demo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging> <properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <dependencies> <!-- web必要依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.7.5</version>
</dependency> <!-- hutool工具类库 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.9</version>
</dependency> </dependencies> <build> <!-- 指定打包出来的文件名 -->
<finalName>test-api</finalName> <plugins> <plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.5.0</version>
</plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.1</version>
<configuration>
<!--如果想在没有web.xml文件的情况下构建WAR,请设置为false。-->
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin> </plugins>
</build>
</project>
yml: 建两个配置文件test和prod, 配置不同的参数, 测试负载均衡# 其实一个配置文件打包时候改参数内容就行, 意思都一样,
# 只是模仿, 分文件还可以通过日志查看哪个配置文件生效了 # application.yml
spring:
profiles:
active: test # application-test.yml
name: test # application-prod.yml
name: prod
Application: 启动类, 配置自动启动package org.example; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; /**
* @author codor
* @date 2023/03/13 14:22
*/
@SpringBootApplication
public class TestApplication extends SpringBootServletInitializer { public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
} @Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(TestApplication.class);
}
}
controller: 写一个接口读配置文件信息package org.example.controller; import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.extra.spring.SpringUtil;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import java.util.Date; /**
* @author codor
* @date 2023/03/13 14:24
*/
@RestController
@RequestMapping("/test")
public class TestController { @RequestMapping("/time")
public String time() {
return SpringUtil.getProperty("name") +
": " +
DateUtil.format(new Date(), DatePattern.NORM_DATETIME_MS_PATTERN);
}
}
修改
application.yml中激活文件打test和prod的两个包修改两个tomcat中的webapps下, 会自动解压部署.访问各自端口下返回的内容中分别对应着
test和prod即为正常
测试nginx
访问
http://127.0.0.1:8088/test-api/test/time反复刷新得到结果中有
test和prod即为正常, 默认的负载均衡机制应该是轮播.关闭8090的tomcat:
./tomcat8090/bin/shutdown.sh再次刷新, 结果只有
test的结果为正常.再次启动8090的tomcat
刷新结果中则恢复之前的情况
如果tomcat8090中的包关闭后, 刷新会导致一次
test一次404
此次记录只是nginx入门简单使用, 作为笔记记录.
原理, 安装, 整合
参考1: 基本原理
参考2: 代理
参考3: 实现原理
参考4: upstream模块
参考5: Nginx安装
参考6: SpringBoot整合Nginx
ngix安装与使用的更多相关文章
- linux ngix安装
因为我完全按照第一篇参考文章从上到下一步步安装导致有些安装失败最后重装的,过程有点乱,就没自己总结please read the follow articles Linux 安装Nginx详细图解教程 ...
- windows ngix 安装 配置 使用
参考版本nginx-1.10.3 一.常用命令 start nginx.exe //开启服务 nginx.exe -s stop ...
- Ngix
Ngix安装 官网地址,下载为源码,需要编译安装 http://nginx.org/ 环境 1.需要安装gcc的环境. yum install gcc-c++ 2.第三方的开发包. PCRE PCRE ...
- #在windows上使用ngix重定向目录访问远程服务器文件详细实例
为了在开发环境保持于生产环境相同的访问远程服务器文件资源的目录配置,需要在开发环境(windows)在远程文件服务器使用nignx重定向文件目录,因为网上的资料大都是copy的,解释比较笼统,也没有具 ...
- CentOS 6.5安装和配置ngix
一.安装配置ngix 这里用wget直接拉取并安装资源文件 首先安装必要的库(nginx 中gzip模块需要 zlib 库,rewrite模块需要 pcre 库,ssl 功能需要openssl库). ...
- 安装ngix
第一步:解压源码包 第二步:./configure -->这个时候会提示缺少PCRE 这个时候要安装yum -y install pcre-devel 第三步:./configure --> ...
- centos下 yum安装ngix
1.CentOS 6,先执行:rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6. ...
- linux 下安装 python ngix 项目发布流程
1.安装python #1.安装python3.7所需要的依赖包yum -y groupinstall "Development tools"yum -y install zlib ...
- Linux下查看Nginx安装目录、版本号信息?
Linux环境下,怎么确定Nginx是以那个config文件启动的? 输入命令行: ps -ef | grep nginx 摁回车,将出现如下图片: master process 后面的就是 ngi ...
- nginx 安装及代理配置。
新建etc/yum.repos.d/nginx.repo文件,添加以下内容:[nginx] name=nginx repo baseurl=http://nginx.org/packages/cent ...
随机推荐
- cookie和session、token的区别
原作者:施杨(施杨's Think out)出处:http://shiyangxt.cnblogs.com ************** 本文版权归原作者和博客园共有,欢迎转载,转载请保留该申明 ** ...
- 第六章 mysql日志
第六章 mysql日志 一 错误日志 错误日志的默认存放路径是 mysql 存放数据的地方 hostname.err 1. 修改错误日志存放路径 [mysqld] log-error=/data/m ...
- centos7编译安装LNMP服务架构
CentOS7.4 源码编译安装LNMP 1.基于CentOS7.4源码编译安装得lnmp 系统环境CentOS 7.4 系统最小化安装,只安装了一些常用包(vim.lirzs.gcc*.wget. ...
- 基于Linux的ssh协议配置sftp
sftp采用的是ssh加密隧道,安装性方面较ftp强,而且依赖的是系统自带的ssh服务,不像ftp还需要额外的进行安装 1. 创建sftp组 创建完成之后使用cat /etc/group命令组的信息 ...
- Ant Design 分页数据回显问题
我们可以创建一个新的值来保存这些数据allSingleSelectedRowKeys: 下面是我们的HTML结构 <a-table :row-selection="{ selected ...
- mysql 设置外键约束SET FOREIGN_KEY_CHECKS=1
问题描述:Mysql中如果表和表之间建立的外键约束,则无法删除表及修改表结构 解决方法: 在Mysql中取消外键约束: SET FOREIGN_KEY_CHECKS=0; 然后将原来表的数据导出到sq ...
- bzoj 3532
很好的一道题,对理解最小割有很大帮助 首先,不难发现本题与网络流24题中的某一道很类似,我们可以先跑一次dp求出每个节点的LIS,然后拆点,拆出的两点之间连流量为删除的代价的边,剩下的点之间按dp的转 ...
- 写一些Linux文件夹操作的一些感悟。
rwx 权限 对目录的作用 读权限(r) 表示具有读取目录结构列表的权限,也就是说,可以看到目录中有哪些文件和子目录.一旦对目录拥有 r 权限,就可以在此目录下执行 ls 命令,查看目录中的内容. 写 ...
- flask create_time update_time is_delete
create_time = db.Column(db.DateTime, server_default=func.now()) update_time = db.Column(db.DateTime, ...
- MBR和gpt说明
1.MBR MBR的全称是Master Boot Record(主引导记录),MBR早在1983年IBM PC DOS 2.0中就已经提出.之所以叫"主引导记录",是因为它是存在于 ...