背景
公司让研究可视化方案superset, metabase,我就在公司的内网服务器中,安装python,java,docker环境啊,在服务于器上一顿操作后,最后由于内网环境中很多安装包无法下载,放弃了。隔了几天居然发现原来部署在服务器上的静态页面的网站居然都无法访问了。万幸是开发环境, 没有造成事故。接下来我来说明一下,我排查的过程。
步骤
检查端口是否通
- cmd, 进入命令行管理工具
- 输入telnet 172.22.2.20 8003 命令(根据自己的实际情况,修改ip和端口号)
注:如果报telnet不是内部或外部命令,解决方式如下链接:https://jingyan.baidu.com/article/7c6fb428d60c6e80642c90ee.html,不同系统可能会有差异,请自行解决一下。
发现端口不通后,开通端口
- 端口不通示例图形式如下:
- 登陆服务器,查看端口开通情况
可以参考此地址的下的相关命令:https://www.cnblogs.com/rh-fernando/p/11340057.html
- 查看开启端口:netstat -ntlp 或:firewall-cmd --list-ports 在此命令下查看端口,发现确实无8016端口
开启端口号(可以通单个端口或者多个端口),具体命令可见上面文档中介绍,这里我就开启多个端口号了,免得以后还要开通,哈哈哈
- 开启多个端口号 firewall-cmd --zone=public --add-port=8016-8020/tcp --permanent
注:开启端口好,务必重启防火墙,命令是systemctl restart firewalld.service,再次查看端口列表才能看到设置的结果哦
重新安装ngnix,配置文档,重新启动
端口号也开了,发现页面是还无法访问, 应该是根本服务根本没有启动,故重新安装了ngnix
- ngnix 安装过程参考地址:https://www.runoob.com/linux/nginx-install-setup.html 这个就够用了
- 在安装好后,重新命令 /usr/local/webserver/nginx/sbin/nginx -s reopen (安装目录你们自己的就行)报了错,类似如下图:
- 使用nginx -c的参数指定nginx.conf文件的位置, 我的命令是/usr/local/webserver/nginx/sbin/nginx -c /usr/local/webserver/nginx/conf/nginx.conf
隐约还记得杀了端口的进程,kill -9 lsof -i :8003 |grep nginx |grep -v grep|awk ‘{print $2}’,可能是ngnix一直无法启动的缘故
- 找到ngnix安装目录 whereis ngnix,找到安装目录,对ngnix 进行配置
我们重点关注一下,端口,服务器,html 目录位置,路由转发,详细的解释可以参考地址:
https://www.runoob.com/w3cnote/nginx-setup-intro.html
示例ngnix配置如下:
server
{
listen 80;#监听端口
server_name localhost;#域名
index index.html index.htm index.php;
root /usr/local/webserver/nginx/html; #站点目录
location /service-jxapp/
{
proxy_pass https://javaws01-srv.juneyaoair.com;
proxy_set_header Host $host:$server_port;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
{
expires 30d; # access_log off;
}
location ~ .*\.(js|css)?$
{
expires 15d; # access_log off;
}
access_log off;
}
可以配置多个server对象
上传文件过程中,nginx产生【413 request entity too large】错误的原因与解决方法
Nginx中的【client_max_body_size】配置属性
通过查资料,发现是Nginx配置中限制了请求的实体大小,因此就可以通过修改Nginx的配置文件来解决这个问题。
http节点下:
http {
# 将Nginx代理的所有请求实体的大小限制为20m
client_max_body_size 20m;
}
server {
# 将该服务下的所有请求实体的大小限制为20m
client_max_body_size 20m;
}
location /yanggb {
# 将此路由请求的实体大小限制为20m
client_max_body_size 20m;
}
nignx的URL匹配规则的部分,如果**接口上没有拦截的字段标识,可以前端加规则,**例如:前端在接口请求的时候,统一的加上API,然后在使用ngnix中进行配置转发地址。
例如:
{
location /api/
{
proxy_pass https://xxx.com;
}
}
保存之后要记得重启Nginx使修改后的配置生效。
3条重要命令
/usr/local/webserver/nginx/sbin/nginx -s reload # 重新载入配置文件
/usr/local/webserver/nginx/sbin/nginx -s reopen # 重启 Nginx
/usr/local/webserver/nginx/sbin/nginx -s stop # 停止 Nginx
nginx重启后出现[error]open(“/usr/local/webserver/nginx/nginx.pid” failed
如何生成nginx.pid文件
在sbin/ 路径下执行, 就会自动生成pid文件
# 找到目录位置
cd /usr/local/webserver/nginx/sbin
# 生成pid
./nginx -c /usr/local/webserver/nginx/conf/nginx.conf