@liruiyi962464
2025-08-25T07:58:13.000000Z
字数 17300
阅读 188
代码在nginx官网下载源码包。https://nginx.org/download/
yum -y install gcc pcre-devel zlib-devel openssl openssl-devel
如果不确定是否安装依赖,执行以下命令查看是否安装,执行后有输出结果代表已经安装过了。 命令中双引号" "内的内容可自行替换。
yum list installed | grep "pcre-devel"
tar -zxvf nginx-1.20.1.tar.gz
参数说明
-x:解压
-z:用 gzip 压缩的文件操作
-v:显示所有过程
-f:使用文件名,注意,这个参数是最后一个参数,后面只能接文件名,不能再加参数。
这里只介绍当前命令用到的选项,其它可自行百度学习。
cd nginx-1.20.1
源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)。
(1)先执行配置命令
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module
(2)执行编译命令
make
(3)执行安装命令
make install
这时候,/usr/local下就已经生成了nginx目录。
(4)查看nginx版本信息:
#进入可执行目录sbincd /usr/local/nginx/sbin/#查看nginx版本信息./nginx -v#查看nginx版本信息、编译版本、配置参数 大写字母V./nginx -V
1.检查配置文件中语法是否正确
/usr/local/nginx/sbin/nginx -t
2.启动
进入可执行目录sbin
cd /usr/local/nginx/sbin/
启动nginx
#等同于/usr/local/nginx/sbin/nginx,也可使用这个命令/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf./nginx# 停止命令, 配合./nginx命令也可实现重启./nginx -s stop# 也是停止命令,快速关闭 配合./nginx命令也可实现重启./nginx -s quit# 重启命令,重新加载配置文件./nginx -s reload
3.访问nginx页面
http://IP地址:端口号 ngixn默认端口号是80,可在配置文件中(在安装目录/config/nginx.conf)查看修改。如下所示,root下指的是文件在nginx根目录下的html文件夹,前端打包后dist包直接放入html即可。
# 处理根路径和默认请求location / {# 重写URL规则rewrite ^/(.*)/jeecg-boot/jeecg-boot(.*)$ /$1/jeecg-boot$2 last;# 设置根目录root ./html/dist;# 默认索引文件index index.html index.htm;# 尝试查找文件,如果找不到则返回index.htmltry_files $uri $uri/ /index.html;}
(1)如果访问不到,请检查nginx端口是否存在,没用任何输出说明不存在。
netstat -nltp | grep 80
(2)防火墙需要关闭,如果不想关闭请直接看第(3)步。
#查看防火墙状态systemctl status firewalld#关闭防火墙systemctl stop firewalld#开启防火墙systemctl start firewalld
(3)如果不想关闭防火墙,则需要添加防火墙对外开放的nginx端口 。
# 添加防火墙对外开放的nginx 80端口firewall-cmd --permanent --zone=public --add-port=80/tcp# 重新加载防火墙配置firewall-cmd --reload# 查看防火墙开放的所有端口,看看是否有80端口firewall-cmd --zone=public --list-ports
1.nginx设置开机自启,要操作的文件是/etc/rc.d/rc.local
#给予执行权限chmod +x /etc/rc.d/rc.local#打开文件/etc/rc.local超链接指向了/etc/rc.d/rc.localvi /etc/rc.d/rc.local#输入i,光标移动到最后一行上,添加下面的命令(nginx启动命令)/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
在Windows系统下启动和管理Nginx的步骤如下,结合官方推荐操作及常见问题排查,确保能高效运行服务:
基础启动命令
进入Nginx安装目录(如 C:\nginx),执行以下任一命令:
start nginx(推荐):后台静默启动,不阻塞命令行窗口。 nginx.exe:直接运行,但会占用当前命令行窗口,需新开窗口执行其他操作。指定配置文件启动
若需加载非默认配置文件,使用:
start nginx -c "C:\自定义路径\配置文件.conf"
验证启动状态
http://localhost(默认端口80),出现欢迎页即成功。 bash
tasklist /fi "imagename eq nginx.exe"
快速停止(不保存状态)
nginx -s stop
优雅停止(完成当前请求后退出)
nginx -s quit
强制终止进程(极端情况)
若上述命令无效,通过任务管理器结束所有 nginx.exe 进程,或执行:
taskkill /f /im nginx.exe
修改配置后热重载
无需重启服务,直接生效新配置:
nginx -s reload
检查配置语法
启动前验证配置文件正确性:
nginx -t
输出 syntax is ok 表示无语法错误。
重新打开日志文件
日志轮转后刷新日志写入:
nginx -s reopen
4.访问nginx页面
http://IP地址:端口号 ngixn默认端口号是80,可在配置文件中(在安装目录/config/nginx.conf)查看修改。如下所示,root下指的是文件在nginx根目录下的html文件夹,前端打包后dist包直接放入html即可。
# 处理根路径和默认请求location / {# 重写URL规则rewrite ^/(.*)/jeecg-boot/jeecg-boot(.*)$ /$1/jeecg-boot$2 last;# 设置根目录root ./html/dist;# 默认索引文件index index.html index.htm;# 尝试查找文件,如果找不到则返回index.htmltry_files $uri $uri/ /index.html;}
user root;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;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;server_tokens off;#gzip on;upstream jeecg-boot_server{server 202.207.122.52:8080;}server {listen 13000;server_name localhost;client_max_body_size 20m;#添加头部信息proxy_set_header Cookie $http_cookie;proxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-Server $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-real-ip $remote_addr;location ~* /.+jmreport.+ {# 使用if指令和=403来拒绝访问if ($request_uri ~* "jmreport") {return 403;}}location /yunwei/ {rewrite ^/(.*)/yunwei/yunwei(.*)$ /$1/yunwei$2 last;proxy_set_header Host $Host;proxy_set_header X-Forward-For $remote_addr;proxy_pass http://jeecg-boot_server;}location / {rewrite ^/(.*)/yunwei/yunwei(.*)$ /$1/yunwei$2 last;root /home/web/deploy/yunwei;index index.html index.htm;}error_page 404 /index.html;error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}}
# 定义Nginx运行的用户和用户组user root;# 设置工作进程数量,通常设置为CPU核心数worker_processes 1;# 错误日志配置(当前被注释)#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;# PID文件位置(当前被注释)#pid logs/nginx.pid;# events块配置events {# 每个工作进程的最大连接数worker_connections 1024;}# HTTP核心配置http {# 包含MIME类型定义文件include mime.types;# 默认MIME类型,如果无法识别则使用此类型default_type application/octet-stream;# 启用高效文件传输模式sendfile on;# 减少网络报文段的数量(当前被注释)#tcp_nopush on;# 保持连接的超时时间(当前被注释)#keepalive_timeout 0;# 客户端保持连接的超时时间(秒)keepalive_timeout 65;# 关闭服务器版本信息显示,增强安全性server_tokens off;# 启用gzip压缩(当前被注释)#gzip on;# 定义上游服务器组upstream jeecg-boot_server{# 定义后端服务器(当前被注释)#server 202.207.122.51:8080 weight=5;# 定义后端服务器,权重为5server 192.168.10.167:8080 weight=5;}# 定义服务器块server {# 监听3000端口listen 3000;# 服务器名称server_name localhost;# 客户端请求最大大小限制client_max_body_size 20m;# 添加代理头部信息proxy_set_header Cookie $http_cookie;proxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-Server $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-real-ip $remote_addr;# 阻止包含"jmreport"的请求路径location ~* /.+jmreport.+ {# 使用if指令和=403来拒绝访问if ($request_uri ~* "jmreport") {return 403;}}# 处理/jeecg-boot/路径的请求location /jeecg-boot/ {# 重写URL规则rewrite ^/(.*)/jeecg-boot/jeecg-boot(.*)$ /$1/jeecg-boot$2 last;# 设置代理头部信息proxy_set_header Host $Host;proxy_set_header X-Forward-For $remote_addr;# 代理到上游服务器proxy_pass http://jeecg-boot_server;}# 处理根路径和默认请求location / {# 重写URL规则rewrite ^/(.*)/jeecg-boot/jeecg-boot(.*)$ /$1/jeecg-boot$2 last;# 设置根目录root ./html/dist;# 默认索引文件index index.html index.htm;# 尝试查找文件,如果找不到则返回index.htmltry_files $uri $uri/ /index.html;}# 自定义404错误页面error_page 404 /index.html;# 定义服务器错误页面error_page 500 502 503 504 /50x.html;# 50x错误页面配置location = /50x.html {root html;}}}
#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 {# ...# 设置连接超时时间为30秒fastcgi_connect_timeout 600s;# 设置请求超时时间为60秒fastcgi_send_timeout 600s;fastcgi_read_timeout 600s;proxy_send_timeout 600s;proxy_read_timeout 600s;client_body_timeout 600s;client_header_timeout 600s;include mime.types;default_type application/octet-stream;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;server {listen 3031;server_name localhost;#添加头部信息proxy_set_header Cookie $http_cookie;proxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-Server $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-real-ip $remote_addr;client_max_body_size 500m;#添加拦截路径和代理地址location /api/ {proxy_pass http://127.0.0.1:8899/; #注意:使用代理地址时末尾记得加上斜杠"/"。}location /jeecg-boot-file {#proxy_set_header Host $Host;#proxy_set_header X-Forward-For $remote_addr;proxy_pass http://127.0.0.1:8899;}location /jeecg-boot {proxy_set_header Host $Host;proxy_set_header X-Forward-For $remote_addr;proxy_pass http://127.0.0.1:8899;}location / {root E:\\shuohuang_nginx\\shuohuang_nginx-1.20.2\\html\\dist;index index.html index.htm;}error_page 404 /index.html;error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}}
# 定义Nginx运行的用户和用户组(当前被注释,默认使用nobody)#user nobody;# 设置工作进程数量,通常设置为CPU核心数worker_processes 1;# 错误日志配置(当前被注释)#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;# PID文件位置(当前被注释)#pid logs/nginx.pid;# events块配置events {# 每个工作进程的最大连接数worker_connections 1024;}# HTTP核心配置http {# 设置各种超时时间(单位:秒)# FastCGI连接超时时间fastcgi_connect_timeout 600s;# FastCGI发送请求超时时间fastcgi_send_timeout 600s;# FastCGI读取响应超时时间fastcgi_read_timeout 600s;# 代理发送请求超时时间proxy_send_timeout 600s;# 代理读取响应超时时间proxy_read_timeout 600s;# 客户端请求体超时时间client_body_timeout 600s;# 客户端请求头超时时间client_header_timeout 600s;# 包含MIME类型定义文件include mime.types;# 默认MIME类型,如果无法识别则使用此类型default_type application/octet-stream;# 启用高效文件传输模式sendfile on;# 减少网络报文段的数量(当前被注释)#tcp_nopush on;# 保持连接的超时时间(当前被注释)#keepalive_timeout 0;# 客户端保持连接的超时时间(秒)keepalive_timeout 65;# 定义服务器块server {# 监听3031端口listen 3031;# 服务器名称server_name localhost;# 添加代理头部信息proxy_set_header Cookie $http_cookie;proxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-Server $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-real-ip $remote_addr;# 客户端请求最大大小限制(500MB)client_max_body_size 500m;# 处理/api/路径的请求location /api/ {# 代理到后端服务器(注意末尾斜杠)proxy_pass http://192.168.10.26:8899/;}# 处理/jeecg-boot-file路径的请求location /jeecg-boot-file {# 代理到本地8899端口(注释了部分头部设置)proxy_pass http://127.0.0.1:8899;}# 处理/jeecg-boot路径的请求location /jeecg-boot {# 设置代理头部信息proxy_set_header Host $Host;proxy_set_header X-Forward-For $remote_addr;# 代理到本地8899端口proxy_pass http://127.0.0.1:8899;}# 处理根路径和默认请求location / {# 设置根目录(Windows路径)root E:\\shuohuang_nginx\\shuohuang_nginx-1.20.2\\html\\dist;# 默认索引文件index index.html index.htm;}# 自定义404错误页面error_page 404 /index.html;# 定义服务器错误页面error_page 500 502 503 504 /50x.html;# 50x错误页面配置location = /50x.html {root html;}}}
#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 {# ...# 设置连接超时时间为30秒fastcgi_connect_timeout 600s;# 设置请求超时时间为60秒fastcgi_send_timeout 600s;fastcgi_read_timeout 600s;proxy_send_timeout 600s;proxy_read_timeout 600s;client_body_timeout 600s;client_header_timeout 600s;include mime.types;default_type application/octet-stream;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;#定义变量,兼容HTTP和websocket两种请求协议map $http_upgrade $connection_upgrade {default keep-alive; #默认 keep-alive,表示HTTP协议。'websocket' upgrade;#若是 websocket 请求,则升级协议 upgrade。}#物流港大屏1server {listen 3000;server_name localhost;#添加头部信息proxy_set_header Cookie $http_cookie;proxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-Server $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-real-ip $remote_addr;client_max_body_size 500m;#添加拦截路径和代理地址location /api/ {proxy_pass http://localhost:8080/; #注意:使用代理地址时末尾记得加上斜杠"/"。}location /jeecg-boot-file {#proxy_set_header Host $Host;#proxy_set_header X-Forward-For $remote_addr;proxy_pass http://localhost:8080;}location /jeecg-boot {proxy_set_header Host $Host;proxy_set_header X-Forward-For $remote_addr;proxy_pass http://localhost:8080;}#websocket的代理规则location /jeecg-boot/websocket {proxy_pass http://localhost:8080; #转发到后端接口proxy_read_timeout 60s; #设置超时时间,默认是60proxy_http_version 1.1;proxy_set_header Host $host;#这个配置不要漏了,必须要proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $connection_upgrade;}location / {root C:\\wuliugang1\\nginx-1.20.2\\html\\dist1;index index.html index.htm;}error_page 404 /index.html;error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}# 物流港大屏2server {listen 3001;server_name localhost;#添加头部信息proxy_set_header Cookie $http_cookie;proxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-Server $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-real-ip $remote_addr;client_max_body_size 500m;#添加拦截路径和代理地址location /api/ {proxy_pass http://localhost:8099/; #注意:使用代理地址时末尾记得加上斜杠"/"。}location /jeecg-boot-file {#proxy_set_header Host $Host;#proxy_set_header X-Forward-For $remote_addr;proxy_pass http://localhost:8099;}location /jeecg-boot {proxy_set_header Host $Host;proxy_set_header X-Forward-For $remote_addr;proxy_pass http://localhost:8099;}location / {root C:\\wuliugang1\\nginx-1.20.2\\html\\dist2;index index.html index.htm;}#websocket的代理规则location /jeecg-boot/websocket {proxy_pass http://localhost:8099; #转发到后端接口proxy_read_timeout 60s; #设置超时时间,默认是60proxy_http_version 1.1;proxy_set_header Host $host;#这个配置不要漏了,必须要proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $connection_upgrade;}error_page 404 /index.html;error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}#定时任务项目server {listen 3033;server_name localhost;charset utf-8;location / {root C:\\task\\task_ui;try_files $uri $uri/ /index.html;index index.html index.htm;}location /prod-api/ {proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://localhost:9080/;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}}
#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 {# ...# 设置连接超时时间为30秒fastcgi_connect_timeout 600s;# 设置请求超时时间为60秒fastcgi_send_timeout 600s;fastcgi_read_timeout 600s;proxy_send_timeout 600s;proxy_read_timeout 600s;client_body_timeout 600s;client_header_timeout 600s;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;#定义变量,兼容HTTP和websocket两种请求协议map $http_upgrade $connection_upgrade {default keep-alive; #默认 keep-alive,表示HTTP协议。'websocket' upgrade;#若是 websocket 请求,则升级协议 upgrade。}#gzip on;server{listen 3031;server_name localhost;#添加头部信息proxy_set_header Cookie $http_cookie;proxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-Server $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-real-ip $remote_addr;#charset koi8-r;#access_log logs/host.access.log main;client_max_body_size 500m;#添加拦截路径和代理地址location /api/ {proxy_pass http://localhost:8091/; #注意:使用代理地址时末尾记得加上斜杠"/"。}location /jeecg-boot-file {#proxy_set_header Host $Host;#proxy_set_header X-Forward-For $remote_addr;proxy_pass http://localhost:8091;}location /jeecg-boot {proxy_set_header Host $Host;proxy_set_header X-Forward-For $remote_addr;proxy_pass http://localhost:8091;}location / {root ./html/dist_lte;index index.html index.htm;try_files $uri $uri/ /index.html =404;}#websocket的代理规则location /jeecg-boot/websocket {proxy_pass http://localhost:8091; #转发到后端接口proxy_read_timeout 60s; #设置超时时间,默认是60proxy_http_version 1.1;proxy_set_header Host $host;#这个配置不要漏了,必须要proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $connection_upgrade;}#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;}}# another virtual host using mix of IP-, name-, and port-based configuration##server {# listen 8000;# listen somename:8080;# server_name somename alias another.alias;# location / {# root html;# index index.html index.htm;# }#}# HTTPS server##server {# listen 443 ssl;# server_name localhost;# ssl_certificate cert.pem;# ssl_certificate_key cert.key;# ssl_session_cache shared:SSL:1m;# ssl_session_timeout 5m;# ssl_ciphers HIGH:!aNULL:!MD5;# ssl_prefer_server_ciphers on;# location / {# root html;# index index.html index.htm;# }#}}
#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;#定义变量,兼容HTTP和websocket两种请求协议map $http_upgrade $connection_upgrade {default keep-alive;'websocket' upgrade;}upstream yunwei_server{server 202.207.122.112:9500;server 202.207.122.113:9500;}upstream xxl_server{server 202.207.122.122:18090;}server {listen 3000;server_name localhost;# 反向代理到后端服务proxy_set_header Cookie $http_cookie;proxy_set_header X-Forwarded-Host $host;proxy_set_header X-Forwarded-Server $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-real-ip $remote_addr;# 统一添加CORS头add_header 'Access-Control-Allow-Origin' '$http_origin' always;add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization' always;add_header 'Access-Control-Allow-Credentials' 'true' always;# add_header X-Frame-Options DENY;# add_header Access-Control-Allow-Origin https://trusted.com;# add_header Vary Origin;location ~* /.+jmreport.+ {# 使用if指令和=403来拒绝访问if ($request_uri ~* "jmreport") {return 403;}}location /xxl-job-admin {proxy_pass http://202.207.122.112:18090;proxy_http_version 1.1;proxy_set_header Host $host;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $connection_upgrade;}location /internship {proxy_pass http://yunwei_server;proxy_http_version 1.1;proxy_set_header Host $host;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $connection_upgrade;}#charset koi-r;#access_log logs/host.access.log main;location / {root /data/nginx/html;index index.html index.htm;try_files $uri $uri/ /index.html;}#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;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {# root html;# fastcgi_pass 127.0.0.1:9000;# fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;# include fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {# deny all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {# listen 8000;# listen somename:8080;# server_name somename alias another.alias;# location / {# root html;# index index.html index.htm;# }#}# HTTPS server##server {# listen 443 ssl;# server_name localhost;# ssl_certificate cert.pem;# ssl_certificate_key cert.key;# ssl_session_cache shared:SSL:1m;# ssl_session_timeout 5m;# ssl_ciphers HIGH:!aNULL:!MD5;# ssl_prefer_server_ciphers on;# location / {# root html;# index index.html index.htm;# }#}}