nginx

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > nginx > nginx 代理配置

nginx各种代理配置大全

作者:bacawa

本文主要介绍了nginx各种代理配置大全,主要包括了路径配置,http跳转https,微信支付的校验等,具有一定的参考价值,感兴趣的可以了解一下

以下展示不同情况下的配置:location路径、root路径、alias路径、proxy_pass代理路径。
通过这几个配置路径地址对比,建议location后面都带上斜杠。

1. 基础配置说明

# 进程数量
worker_processes 1;
events {
  # 最大连接数量
  worker_connections 1024;
}
http {
  include mime.types;
  default_type application/octet-stream;
  sendfile on;
  keepalive_timeout 65;

2. 演示如何强制http跳转https

server {
  listen 80;
  server_name test.com;
  # http强制跳转到https
  rewrite ^(.*)$ https://$server_name$1 permanent;
}

3. 演示如何配置微信支付的校验文件

server {
  listen 80;
  server_name localhost;
  # 默认根路径
  location / {
    root index.html;
  }
  # 微信支付校验文件,可以直接配置访问名称
  location ^~/MP_verify_2g3uEjrB5B2LIbNl.txt {
    alias /home/MP_verify_2g3uEjrB5B2LIbNl.txt;
  }
  # 微信支付校验文件,也可以通过正则配置
  location ~^/MP_verify_[a-zA-Z0-9]*\.(txt)$ {
    root /home/;
    rewrite ^/home/(.txt)$ /home/$1 last;
  }
}

4. 演示root和alias两种配置静态资源的区别

server {
  listen 80;
  server_name localhost;
  # 用root方式,location中的路径会拼加到root的地址后面
  # 请求路径为:http://localhost:8080/files/index.jpg    实际访问为:/home/files/index.jpg
  location ~^/files/ {
    root /home/;
    index index.html index.htm;
  }
  # 用alias方式,location中的路径不会拼加到alias的地址后面
  # 这请求路径为:http://localhost:8080/files/index.jpg    实际访问为:/home/index.jpg
  location ~^/files/ {
    alias /home/;
    index index.html index.htm;
  }
}

5.演示请求后台接口代理配置

server {
  listen 8080;
  server_name localhost;
  #################### 第一种场景(代理地址不加斜杠) ####################
  # 请求路径为:http://127.0.0.1:8080/api/getUser   实际代理为:http://127.0.0.1:8000/api/getUser
  location ^~/api/ {
    proxy_pass http://127.0.0.1:8000;
    proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号
    proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
  }
  # 请求路径为:http://127.0.0.1:8080/api/getUser   实际指向为:http://127.0.0.1:8000/api/getUser
  location ^~/api {
    proxy_pass http://127.0.0.1:8000;
    proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号
    proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
  }
  #################### 第二种场景(代理地址+斜杠) ####################
  # 请求路径为:http://127.0.0.1:8080/api/getUser   实际代理为:http://127.0.0.1:8000/getUser
  location ^~/api/ {
    proxy_pass http://127.0.0.1:8000/;
    proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号
    proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
  }
  # 请求路径为:http://127.0.0.1:8080/api/getUser   实际代理为:http://127.0.0.1:8000//getUser
  location ^~/api {
    proxy_pass http://127.0.0.1:8000/;
    proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号
    proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
  }
  #################### 第三种场景(代理地址+后缀) ####################
  # 请求路径为:http://127.0.0.1:8080/api/getUser   实际代理为:http://127.0.0.1:8000/user/getUser
  location ^~/api {
    proxy_pass http://127.0.0.1:8000/user;
    proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号
    proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
  }
  # 请求路径为:http://127.0.0.1:8080/api/getUser   实际代理为:http://127.0.0.1:8000/usergetUser
  location ^~/api/ {
    proxy_pass http://127.0.0.1:8000/user;
    proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号
    proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
  }
  #################### 第四种场景(代理地址+后缀+斜杠) ####################
  # 请求路径为:http://127.0.0.1:8080/api/getUser   实际代理为:http://127.0.0.1:8000/user/getUser
  location ^~/api/ {
    proxy_pass http://127.0.0.1:8000/user/;
    proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号
    proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
  }
  # 请求路径为:http://127.0.0.1:8080/api/getUser   实际代理为:http://127.0.0.1:8000/user//getUser
  location ^~/api {
    proxy_pass http://127.0.0.1:8000/user/;
    proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号
    proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
  }
}

6.演示前端项目如何部署nginx

server {
  listen 8090;
  server_name localhost;
  # 默认访问
  # 部署路径:/home/web/my_demo
  # 访问路径为:http://localhost:8090/
  location / {
    try_files $uri $uri/ /index.html;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $http_host;
    root /home/web/my_demo/;
    index index.html index.htm;
  }
  # 带前缀的访问
  # 部署路径:/home/web/my_demo
  # 访问路径为:http://localhost:8090/my_demo/
  # 如果location路径最后没有配置斜杠,则浏览器输入访问地址后,路径最后会自动拼一个斜杠
  location ^~/my_demo/ {
    try_files $uri $uri/ /my_demo/index.html;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $http_host;
    root /home/web/;
    index index.html index.htm;
  }
}
}

 到此这篇关于nginx各种代理配置大全的文章就介绍到这了,更多相关nginx 代理配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文