Nginx 配置反向代理
发表于:2024-11-12 作者:千家信息网编辑
千家信息网最后更新 2024年11月12日,一、前言反向代理作用隐藏服务器信息 -> 保证内网的安全,通常将反向代理作为公网访问地址,web服务器是内网,即通过nginx配置外网访问web服务器内网举例比如小编的码云个人博客地址为:http:/
千家信息网最后更新 2024年11月12日Nginx 配置反向代理
一、前言
反向代理作用隐藏服务器信息 -> 保证内网的安全,通常将反向代理作为公网访问地址,web服务器是内网,即通过nginx配置外网访问web服务器内网
举例比如小编的码云个人博客地址为:http://zhengqingya.gitee.io/blog/ ,现在小编想通过自己的服务器地址 http://www.zhengqing520.com/blog/ 来访问到码云上面个人博客的地址,并且访问地址是自己的服务器ip或者域名地址,这时候我们就可以通过Nginx配置反向代理来实现 ~
二、Nginx如何配置反向代理呢?
我们可以通过 proxy_pass 来配置
(1)找到nginx配置文件 nginx.conf
温馨小提示小编是通过docker拉取的nginx,默认配置文件是nginx.conf中引入包含的default.conf文件
也就是说nginx.conf配置文件中有如下一个配置
include /etc/nginx/conf.d/*.conf;
(2)修改配置 -> 实现反向代理
注:这里小编将我的default.conf配置文件中的内容提到nginx.conf配置文件中来实现
即注释 include /etc/nginx/conf.d/*.conf;
简单配置
比如 www.zhengqing520.com 转发到 http://zhengqingya.gitee.io
server { listen 80; server_name www.zhengqing520.com;# 服务器地址或绑定域名 location / { # 访问80端口后的所有路径都转发到 proxy_pass 配置的ip中 root /usr/share/nginx/html; index index.html index.htm; proxy_pass http://zhengqingya.gitee.io; # 配置反向代理的ip地址和端口号 【注:url地址需加上http:// 或 https://】 }}
复杂配置
根据不同的后缀名访问不同的服务器地址
- www.zhengqing520.com/api 转发到 http://www.zhengqing520.com:9528/api/
- www.zhengqing520.com/blog/ 转发到 http://zhengqingya.gitee.io/blog/
server { listen 80; server_name www.zhengqing520.com;# 服务器地址或绑定域名 location ^~ /api { # ^~/api 表示匹配前缀为api的请求 proxy_pass http://www.zhengqing520.com:9528/api/; # 注:proxy_pass的结尾有/, -> 效果:会在请求时将/api/*后面的路径直接拼接到后面 # proxy_set_header作用:设置发送到后端服务器(上面proxy_pass)的请求头值 # 【当Host设置为 $http_host 时,则不改变请求头的值; # 当Host设置为 $proxy_host 时,则会重新设置请求头中的Host信息; # 当为$host变量时,它的值在请求包含Host请求头时为Host字段的值,在请求未携带Host请求头时为虚拟主机的主域名; # 当为$host:$proxy_port时,即携带端口发送 ex: $host:8080 】 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; # 在web服务器端获得用户的真实ip 需配置条件① 【 $remote_addr值 = 用户ip 】 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# 在web服务器端获得用户的真实ip 需配置条件② proxy_set_header REMOTE-HOST $remote_addr; # proxy_set_header X-Forwarded-For $http_x_forwarded_for; # $http_x_forwarded_for变量 = X-Forwarded-For变量 } location ^~ /blog/ { # ^~/blog/ 表示匹配前缀为blog/后的请求 proxy_pass http://zhengqingya.gitee.io/blog/; proxy_set_header Host $proxy_host; # 改变请求头值 -> 转发到码云才会成功 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; }}
三、总结
这里再给出一下小编nginx配置文件中的全部内容以供参考
user nginx;worker_processes 1;error_log /var/log/nginx/error.log warn;pid /var/run/nginx.pid;events { worker_connections 1024;}http { include /etc/nginx/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 /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; # include /etc/nginx/conf.d/*.conf; # 引入default.conf配置文件 server { listen 80; server_name www.zhengqing520.com;# 服务器地址或绑定域名 #charset koi8-r; #access_log /var/log/nginx/host.access.log main; # start --------------------------------------------------------------------------------------------- location / { root /usr/share/nginx/html; try_files $uri $uri/ @router; index index.html index.htm; # proxy_pass http://zhengqingya.gitee.io; # 代理的ip地址和端口号 # proxy_connect_timeout 600; #代理的连接超时时间(单位:毫秒) # proxy_read_timeout 600; #代理的读取资源超时时间(单位:毫秒) } location @router { rewrite ^.*$ /index.html last; } location ^~ /api { # ^~/api/表示匹配前缀为api的请求 proxy_pass http://www.zhengqing520.com:9528/api/; # 注:proxy_pass的结尾有/, -> 效果:会在请求时将/api/*后面的路径直接拼接到后面 # proxy_set_header作用:设置发送到后端服务器(上面proxy_pass)的请求头值 # 【当Host设置为 $http_host 时,则不改变请求头的值; # 当Host设置为 $proxy_host 时,则会重新设置请求头中的Host信息; # 当为$host变量时,它的值在请求包含Host请求头时为Host字段的值,在请求未携带Host请求头时为虚拟主机的主域名; # 当为$host:$proxy_port时,即携带端口发送 ex: $host:8080 】 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; # 在web服务器端获得用户的真实ip 需配置条件① 【 $remote_addr值 = 用户ip 】 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# 在web服务器端获得用户的真实ip 需配置条件② proxy_set_header REMOTE-HOST $remote_addr; # proxy_set_header X-Forwarded-For $http_x_forwarded_for; # $http_x_forwarded_for变量 = X-Forwarded-For变量 } location ^~ /blog/ { # ^~/blog/ 表示匹配前缀为blog/后的请求 proxy_pass http://zhengqingya.gitee.io/blog/; proxy_set_header Host $proxy_host; # 改变请求头值 -> 转发到码云才会成功 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; } # end --------------------------------------------------------------------------------------------- #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 /usr/share/nginx/html; } }}
配置
服务器
服务
地址
代理
文件
变量
域名
用户
前缀
条件
作用
信息
端口
路径
不同
成功
个人
主机
内容
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发增值税是多少钱
通信网络安全保护
小学生班会记录网络安全
网络安全小妙术艺术字
服务器收费吗
ibm网络工程师安装服务器
如何提高人民网络安全意识
布奔网络技术工作室
个人地理数据库怎么创建
慈溪手机软件开发找哪家
青岛税控服务器地址
ibm软件开发中心薪酬
网络安全方案设计是什么
全球供应链数据库有哪些
大学图书馆数据库重要吗
网络安全隔离卡中孚
dpdk读取数据库
数据库查询学生来自哪些专业
本科毕业软件开发工资待遇
部落冲突腾讯服务器
IBM服务器日志管理
服务器装显卡
销售实时数据库
企业软件开发的步骤
公安专网网络安全责任状
360网络安全公司发布公告
计算机网络安全作业
北京万登软件开发
网络安全事故动画演示
简单介绍网络安全防护措施