配置命令路径
/usr/local/nginx/sbin
查看nginx版本
./nginx -v
停止nginx服务
./nginx -s stop
启动nginx服务
./nginx
重新加载nginx,适用于当nginx.conf配置文件修改后,使用下面命令可以使得配置文件生效
./nginx -s reload
查看nginx服务是否运行
netstat -ntlp

由三部分组成
nginx服务器全局生效的配置命令
worker_processes 1; # 服务器并发处理能力,值越大并发能力越强(受自身配置限制)
影响nginx和用户网络的连接
worker_connections 1024; #最大连接数1024个,需灵活配置
nginx配置最频繁的部分,比如代理,日志,缓存、第三方模块等等。
需要注意的是http块可以包括http全局块和server块
包括文件引入、MIME-TYPE定义,日志自定义、连接超时等等
http {
include mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream; # 访问到未定义的扩展名的时候,就默认为下载该文件
与虚拟主机有密切关系,主要是为了节省硬件成本
一个http块可以包含多个server块,而一个server块就等于一个虚拟主机
server块又包含全局server块和location块
全局server块
server {
listen 8012; # 目前监听的端口号
server_name localhost; # 主机名称
location / { #表示默认首页
root html;
index index.html index.htm;
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

浏览器输入地址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;

其中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

按请求时间逐一分配,如果某个服务器挂了,就自动剔除
默认weight值是1,值越大表示权重越大,分配到的几率也就越大
当后端服务器性能不均时候,可以考虑该策略
示例
upstream myserver {
server 127.0.0.1:8080 weight=5;
server 127.0.0.1:8081 weight=10;
}
每个请求按访问ip的hash结果分配,这样子访客固定访问一个后端服务器,可以解决session问题
举个例子:
A用户固定ip,第一次访问到8080tomcat,那么后面就都是访问到这台机器
示例
upstream myserver {
ip_hash;
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
根据后端响应时间来分配请求,需要时间短的优先分配
示例
示例
upstream myserver {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
fair;
}
nginx适合处理静态界面(或者说静态请求),
tomcat适合处理动态界面(或者说动态请求)
动静分离的方式:
1、静态文件一个域名,放在独立的服务器中
2、混合发布,使用nginx分离
通过location指定不同后缀名实现不同的请求和转发。比如expires头部,用于设置过期时间
这边使用第一种方案
准备静态资源

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

实现效果


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

在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
1、先判断是否又ssl模块,可参考第六大点
2、这边已安装过ssl模块(–with-http_ssl_module)
修改配置文件,添加server模块接即可
大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje
我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server
我有一个在Linux服务器上运行的ruby脚本。它不使用rails或任何东西。它基本上是一个命令行ruby脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配
1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模
我是ruby的新手,正在配置IRB。我喜欢pretty-print(需要'pp'),但总是输入pp来漂亮地打印它似乎很麻烦。我想做的是默认情况下让它漂亮地打印出来,所以如果我有一个var,比如说,'myvar',然后键入myvar,它会自动调用pretty_inspect而不是常规检查。我从哪里开始?理想情况下,我将能够向我的.irbrc文件添加一个自动调用的方法。有什么想法吗?谢谢! 最佳答案 irb中默认pretty-print对象正是hirb被迫去做。Theseposts解释hirb如何将几乎所有内容转换为ascii表。虽
我想在IRB中浏览文件系统并让提示更改以反射(reflect)当前工作目录,但我不知道如何在每个命令后进行提示更新。最终,我想在日常工作中更多地使用IRB,让bash溜走。我在我的.irbrc中试过这个:require'fileutils'includeFileUtilsIRB.conf[:PROMPT][:CUSTOM]={:PROMPT_N=>"\e[1m:\e[m",:PROMPT_I=>"\e[1m#{pwd}>\e[m",:PROMPT_S=>"FOO",:PROMPT_C=>"\e[1m#{pwd}>\e[m",:RETURN=>""}IRB.conf[:PROMPT_MO
我正在使用Ruby/Mechanize编写一个“自动填写表格”应用程序。它几乎可以工作。我可以使用精彩CharlesWeb代理以查看服务器和我的Firefox浏览器之间的交换。现在我想使用Charles查看服务器和我的应用程序之间的交换。Charles在端口8888上代理。假设服务器位于https://my.host.com。.一件不起作用的事情是:@agent||=Mechanize.newdo|agent|agent.set_proxy("my.host.com",8888)end这会导致Net::HTTP::Persistent::Error:...lib/net/http/pe