Linux环境-部署手册-Nginx安装及配置
安装编译工具及库文件:
以便后续对nginx和相关工具进行编译
1
|
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel |
zlib与zlib-devel:具体zlib-devel是什么东西,我在网上找到了这样一段话:“devel包含普通包,只比普通包多了头文件。动态链接库的话两种包都有。编译的时候如果需要用到这个库,那么需要安装这个库的devel,因为需要头文件”
我个人的理解是,有些程序,需要依赖一些第三方的东西才能使用,应用到我们当前的场景,就是,nginx安装时有些东西需要用到zlib-devel库,所以,我们要先安装zlib-devel,但是,zlib-devel依赖于zlib所以我们要先安装zlib
gcc-c++: 是一个编译器,大致分为两部分,一部分用来处理编译各种代码,将代码转为c代码,另一部分将得到的c代码进行编译转成电脑硬件相关的汇编或机器码等(类似于Java的一次编译处处运行)
libtool: 是一个通用库支持脚本(/usr/bin/libtool),将使用动态库的复杂性隐藏在统一、可移植的接口中。
openssl与openssl-devel:是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份
安装pcre:
官网下载链接: http://downloads.sourceforge.net/project/pcre/pcre
是一个Perl库,包括 perl 兼容的正则表达式库。这些在执行正规表达式模式匹配时用与Perl 5同样的语法和语义是很有用的
1
2
|
cd /usr/local/src wget http: //downloads.sourceforge.net/project/pcre/pcre/8.43/pcre-8.43.tar.gz |
解压pcre包:
tar -zxvf /usr/local/src/pcre-8.43.tar.gz
进入安装包,编译安装
1
2
3
|
cd /usr/local/src/pcre- 8.43 ./configure make && make install |
查看pcre版本:
1
|
pcre-config --version |
安装nginx
官网下载nginx:http://nginx.org/download
在/usr/local中创建nginx目录,并进入其中下载nginx包
1
2
|
cd /usr/local wget http: //nginx.org/download/nginx-1.9.9.tar.gz |
解压安装包,得到nginx-1.9.9目录
1
|
tar zxvf nginx- 1.20 . 1 .tar.gz<br>mv nginx- 1.20 . 1 nginx<br>cd nginx |
进入nginx-1.9.9目录,并使用之前安装的程序包编译(注意:命令路径必须和安装的pcre的存放路径版本一致)
1
2
3
|
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre- 8.43 make make install |
安装成功,查看nginx版本:
1
|
/usr/local/webserver/nginx/sbin/nginx -v |
最后简单的示例一下nginx的配置,找到nginx.conf文件(一般都在nginx安装目录下的conf目录中),我的文件路径为:/usr/local/nginx/nginx-1.9.9/conf/nginx.conf 所以命令如下:
1
|
vim /usr/local/webserver/nginx/conf/nginx.conf |
详细的nginx配置,参考链接:https://www.cnblogs.com/fuhui-study-footprint/p/12979513.html
下面验证nginx.conf文件是否正确:
1
|
/usr/local/webserver/nginx/sbin/nginx -t |
如下则表示文件正确:
最后启动、关闭、重新载入配置文件、重启nginx命令:
1
2
3
4
|
/usr/local/webserver/nginx/sbin/nginx # 启动nginx /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是否在运行状态:
1
|
ps -ef | grep nginx |
请求服务器,可以直接请求域名,或端口:
配置tomcat代理:
监听端口,配置端口代理请求的路径
worker_processes 1; #可以设置和服务器核数相同的数
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
#charset koi8-r;
location = / {
root html;
index index.html index.htm;
#proxy_pass http://127.0.0.1:8080;
proxy_pass http://127.0.0.1:8080/web/index.html;
}
# 访问static中的文件,因为有时候前端访问static文件中的时候是不加项目名,但是在服务器上,我们需要知道项目的路径所以要加上tomcat的路径
location ^~ /static/ {
root /webroot/static/;
proxy_pass http://127.0.0.1:8080/RoomHomeWeb/static/;
}
#静态文件配置。此处已后缀名方式匹配静态文件,但是无法添加路径,否则会报错
location ~ \.(gif|jpg|png|js|css)$
{
proxy_pass http://127.0.0.1:8080;
}
# 下载页
location ~ \.html$ {
proxy_pass http://127.0.0.1:8080;
}
# 下载页静态文件
location ^~ /assets/ {
proxy_pass http://127.0.0.1:8080/assets/;
}
# 下载页
location ~ \.apk$ {
proxy_pass http://127.0.0.1:8080;
}
#admin
location /admin/ {
proxy_pass http://127.0.0.1:8080;
}
#adminchild
location /stores/ {
proxy_pass http://127.0.0.1:8080;
}
# 编辑管理
location /editor/ {
proxy_pass http://127.0.0.1:8080;
}
# 客服管理
location /customer/ {
proxy_pass http://127.0.0.1:8080;
}
#api
location /api/ {
proxy_pass http://127.0.0.1:9094;
}
location = /50x.html {
root html;
}
}
server {
listen 443;
server_name www.hzyit.cn;
underscores_in_headers on;#https请求默认会拦截header中的内容,需要配置underscores_in_headers进行处理
ssl on;
root html;
index index.html index.htm;
ssl_certificate /home/cert/4643252_www.hzyit.cn.pem; #ssl证书
ssl_certificate_key /home/cert/4643252_www.hzyit.cn.key; #ssl证书秘钥
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:9098; #https域名对应的tomcat
index index.html index.htm;
client_max_body_size 1000M;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
proxy_buffer_size 32k;
proxy_buffers 32 256k;
proxy_busy_buffers_size 512k;
proxy_temp_file_write_size 512k;
}
}
}
如果配置无效
1、检查文件下方是否包含includ 引用了其他文件被,其他文件覆盖
2、检查路径是否正确,端口是否开放,配置是否正确
3、使用 /usr/local/webserver/nginx/sbin/nginx -t 命令,查看你修改的文件是否和 该命令返回的路径一样,如果不一样,修改该命令返回路径的nginx.conf文件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南