# 状态页 location /nginx_status { stub_status; # 允许本地访问 allow 127.0.0.1; # 允许内网网段访问 allow 192.168.0.0/16; # Nginx中的一条访问控制指令,用于拒绝所有客户端访问。 deny all; } location = /50x.html { root html; } # Nginx 代理静态资源(推荐开启缓存、压缩) location / { root html; # index 指令指定默认索引文件名,当请求的 URI 是一个路径时,nginx 按顺序查找并返回第一个找到的索引文件。 # 查找方式是将索引文件的名称附加到 URI 后面,然后对 URI 内部重定向(发起新的 location 搜索),请求可能会在另一个 location 中结束。 index index.html index.htm; } # 匹配请求路径 /postman location /postman { try_files $uri $uri/ =404; # 缓存控制。设置 expires 让浏览器缓存静态文件 expires 7d; add_header Cache-Control "public"; # root 是拼接路径,下面配置最终会解析成 X:/workspaces/mars-parent/mars-service-admin/src/main/resources/static/postman #root X:/workspaces/mars-parent/mars-service-admin/src/main/resources/static/; # alias是替换路径,下面配置最终会解析成 X:/workspaces/mars-parent/mars-service-admin/src/main/resources/static/index.html alias X:/workspaces/mars-parent/mars-service-admin/src/main/resources/static/; index index.html index.htm; } location /consul/ { # 去除 /consul 前缀,使路径正确 rewrite ^/consul(/.*)$ $1 break; # 代理到 Consul Web UI proxy_pass http://127.0.0.1:8500/; # 修改 HTTP 响应中的 Location 和 Refresh 头部字段的重定向地址。 proxy_redirect / /consul/; # 用于替换 HTML 响应中的内容,这样可以修改网页中嵌入的静态资源路径(例如 JS、CSS、图片等)的 URL。 sub_filter '"/' '"/consul/'; # 允许替换多次,防止只替换一次 sub_filter_once off; auth_basic "访问此区域需要密码认证!"; auth_basic_user_file .htpasswd; } # Consul API 请求地址是硬编码,sub_filter '"/v1/' '"/consul/v1/'; 无法替换,需要单独为 /v1/ 配置代理。注意:尾部没有斜杠 location /v1/ { proxy_pass http://127.0.0.1:8500; } # Nginx 代理 Spring Cloud Gateway(反向代理+微服务网关) location /gateway { ###################################### 这里的 proxy_pass 有斜杠,请求转发时会去掉匹配的location,即去掉/gateway。没有斜杠才会保留原路径 ###################################### proxy_pass http://spring_gateway/; # 这里不支持2.0。Web 服务相对于 Nginx 来说就是上游服务(upstream),代理服务与上游服务不适合使用 HTTP/2,因为 HTTP/2 的多路复用的特性是大量的 # 请求复用一个 TCP 连接,在服务端之间是可以大量建立 TCP 连接的,使用 HTTP/2 就相当于放弃了建立大量 TCP 连接的优势,反而会让性能下降 proxy_http_version 1.1; # HTTP头字段 https://zh.wikipedia.org/wiki/HTTP%E5%A4%B4%E5%AD%97%E6%AE%B5 proxy_set_header Connection "keep-alive"; # $host:请求头中的 Host 头;如果没有 Host,会 fallback 到 server_name,HTTP/1.1开始便是必需字段; # 为了适配多级代理场景,在代理链中修改 Host 头以识别不同应用系统。后端通过 X-Forwarded-Host 头识别客户端原始域名 proxy_set_header Host gateway.zhaolq.com; ###################################################### 非标准首部 ###################################################### # 非标准首部,只有一层代理时和 X-Forwarded-For 值相同; proxy_set_header X-Real-IP $remote_addr; # 如果有多级代理,x-forwarded-for 可以记录完整的代理链路。https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/X-Forwarded-For proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 为了确定客户端与负载均衡服务器之间所使用的协议,X-Forwarded-Proto 就派上了用场。 proxy_set_header X-Forwarded-Proto $scheme; # $http_host:请求头中的 Host 头;如果没有 Host,则为空,HTTP/1.1开始便是必需字段; # X-Forwarded-Host 头部的目的是记录整个代理链中的每一个代理所处理的 Host,因此它会被每个代理追加。这样,后端可以获取到完整的代理链信息,包括最初的客户端请求域名和每个代理的域名。 proxy_set_header X-Forwarded-Host $http_host; # 非标准首部,用来确定客户端发起的请求中使用port,其实完全不需要,因为可以根据所使用协议判断,也许是同一个协议(https)开了多个端口? proxy_set_header X-Forwarded-Port $server_port; ###################################################### 非标准首部 ###################################################### # 增加网关连接和响应稳定性 proxy_connect_timeout 10s; proxy_send_timeout 30s; proxy_read_timeout 30s; # 避免缓存响应 proxy_buffering off; # 错误处理(可定制错误页) proxy_intercept_errors on; } # Navicat 使用 http 隧道 # 1、安装php,并设置自启动,测试php默认端口9000。 # 不同发行版的PHP服务名可能不同: # systemctl list-unit-files | grep php # centos: # yum search php-mysql # yum install php-fpm -y # systemctl start php-fpm.service # systemctl enable php-fpm.service # ubuntu: # apt-cache search php-mysql # apt-get install php-fpm -y # cp /etc/php/8.3/fpm/pool.d/www.conf /etc/php/8.3/fpm/pool.d/www.conf.$(date +%F_%H%M%S) && sed -i 's|^listen = .*|listen = 127.0.0.1:9000|' /etc/php/8.3/fpm/pool.d/www.conf # systemctl status php8.3-fpm.service # systemctl start php8.3-fpm.service # systemctl enable php8.3-fpm.service # 2、安装PHP数据库扩展,提供了PHP与数据库通信的接口。 # centos: # yum search php-mysql # yum search php-pgsql # yum install php-mysql php-pgsql -y # ubuntu: # apt-cache search php-mysql # apt-cache search php-pgsql # apt-get install php-mysql php-pgsql -y # 查看PHP已加载的扩展模块:php -m | grep -E "mysql|pgsql" # 查看PHP已配置的扩展目录:php -i | grep extension_dir # 真正存放 .so 扩展文件的目录,查看是否含有 pgsql.so、mysqli.so。 # ********************************************************************************** # *** 注意:若安装的数据库扩展模块没有加载,则需手动修改PHP配置文件中的扩展目录。*** # *** 查看PHP配置文件位置:php --ini *** # *** 修改PHP配置文件中的 extension_dir 配置,应该指向php扩展的so文件目录。 *** # ********************************************************************************** # 3、拷贝 D:\Program Files\PremiumSoft\Navicat Premium 17\resource\httptunnel\ntunnel_mysql.php 到 nginx 的 html/tunnel/ 目录下,访问 ip:port/tunnel/ntunnel_mysql.php # chmod 555 /data/local/nginx/html/tunnel/ntunnel_mysql.php # chmod 555 /data/local/nginx/html/tunnel/ntunnel_pgsql.php # # "~" 表示使用正则匹配。"\.php$" 是正则表达式 location ~ \.php$ { root html; # 告诉 Nginx 把请求转发给 PHP-FPM 进行处理。这里的 127.0.0.1:9000 表示 PHP-FPM 运行在本地的 9000 端口。 fastcgi_pass 127.0.0.1:9000; #fastcgi_index index.php; # 设置 SCRIPT_FILENAME 参数,告诉 PHP-FPM 脚本文件的路径。$document_root 是 Nginx 内置变量,表示当前 location 的 root 路径。$fastcgi_script_name 是 Nginx 内置变量,表示请求的 URI 路径(不包含域名)。 # 如果请求是 /index.php,则 fastcgi_param 会被解析为:SCRIPT_FILENAME=html/index.php。 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; # Nginx 与 FastCGI 后端服务器(比如 PHP-FPM)建立连接时的超时时间。 fastcgi_connect_timeout 120s; # Nginx 向 FastCGI 后端发送请求数据(比如发送 HTTP Header、Body)时的超时时间。 fastcgi_send_timeout 120s; # Nginx 等待 FastCGI 后端返回响应数据(比如生成 HTML 页面)时的超时时间。 fastcgi_read_timeout 120s; auth_basic "访问此区域需要密码认证!"; auth_basic_user_file .htpasswd; }