nginx配置反向代理服务器,实现在https网站中请求http

要在Nginx中配置反向代理,使得HTTPS网站能够安全请求HTTP资源,按照以下步骤操作:

1. 配置HTTPS服务器块

确保Nginx监听443端口,并正确设置SSL证书:

nginx

server {

listen 443 ssl;

server_name example.com;


# SSL证书配置

ssl_certificate /etc/nginx/ssl/cert.pem;

ssl_certificate_key /etc/nginx/ssl/private.key;

ssl_protocols TLSv1.2 TLSv1.3;

ssl_ciphers HIGH:!aNULL:!MD5;


# 其他SSL优化配置...

}

2. 设置反向代理路径

使用location块匹配需要代理的HTTP资源路径,并通过proxy_pass转发请求:

nginx

location /proxy-http/ {

proxy_pass http://backend-server/;


# 传递必要请求头

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;


# 处理后端重定向(可选)

proxy_redirect http://backend-server/ https://example.com/proxy-http/;

}

3. 解释配置

  • location /proxy-http/:匹配所有以/proxy-http/开头的请求。
  • proxy_pass http://backend-server/:将请求转发到后端HTTP服务器。注意末尾的/会去除/proxy-http/前缀。
  • proxy_set_header:确保后端服务器接收正确的Host和客户端IP等信息。
  • proxy_redirect:修改后端返回的重定向地址,将其转换为HTTPS路径,避免客户端直接访问HTTP。

4. 完整示例配置

nginx

server {

listen 443 ssl;

server_name example.com;


ssl_certificate /etc/nginx/ssl/cert.pem;

ssl_certificate_key /etc/nginx/ssl/private.key;

ssl_protocols TLSv1.2 TLSv1.3;

ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-ECDSA-AES128-GCM-SHA256';


location / {

# 主站的其他配置

root /var/www/html;

index index.html;

}


location /proxy-http/ {

proxy_pass http://backend-server/;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;


proxy_redirect http://backend-server/ https://example.com/proxy-http/;

}

}

5. 检查并应用配置

  • 测试Nginx配置是否正确:

bash

sudo nginx -t

  • 重新加载Nginx使配置生效:

bash

sudo systemctl reload nginx

6. 使用示例

  • 当访问https://example.com/proxy-http/image.jpg时,Nginx会代理请求到http://backend-server/image.jpg,并通过HTTPS返回内容,确保浏览器不出现混合内容警告。

注意事项

  • 路径匹配:确保proxy_pass后的URL末尾的/正确处理路径替换。
  • 安全加固:根据需要配置SSL参数,使用强密码套件,保持Nginx更新。
  • 缓存策略:对于静态资源,可添加缓存配置提升性能:

nginx

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;

proxy_cache my_cache;

proxy_cache_valid 200 302 10m;

  • 日志调试:若遇到问题,检查Nginx错误日志(/var/log/nginx/error.log)进行排查。

通过以上配置,HTTPS网站可以安全地通过Nginx反向代理访问HTTP资源,同时保持整体页面的安全性。

相关文章

nginx location配置

nginx location配置location 指令语法location [modifier] [URI] {# 配置块}modifier:匹配修饰符,决定了匹配的类型和优先级。URI:要匹配的请求...

网页服务-Nginx - 修改默认网站存储路径

基本环境底层: Windows 11 x64 虚拟化层:VMWare Workstation 17.0.2 虚拟化兼容性:ESXi 6.7 虚拟硬件: CPU: 4 Core RAM:...

Nginx的路径匹配规则

=,精确匹配^~,匹配以xx开头~,正则匹配,区分大小写~*,正则匹配,不区分大小写!~,正则不匹配,区分大小写!~*,正则不匹配,不区分大小写/ 通配,所有没有匹配的,按当前规则处理 优先级: =...

nginx如何配置跨域

要在 Nginx 中配置跨域,可以使用 add_header 指令来添加 Access-Control-Allow-* 头信息,如下所示:location /api { if ($reques...

在nginx配置文件中设置nginx缓存

可以按照以下步骤进行操作:1.打开nginx配置文件,一般在/etc/nginx/nginx.conf中2.在http段中添加以下内容:http { # 设置nginx缓存路径和缓存大小...

常规服务器环境怎么搭建及项目部署

一、引言在服务器环境搭建和项目部署过程中,需要进行一系列的配置和操作,以确保服务器的正常运行和项目的顺利部署。本文将详细介绍常规服务器环境搭建及项目部署的步骤。如果你没有服务器,没有技术,想要配置这个...