戳下方名片,关注并星标!
回复“1024”获取2TB学习资源!
👉体系化学习:运维工程师打怪升级进阶之路 4.0
— 特色专栏 —
MySQL / PostgreSQL / MongoDB
ElasticSearch / Hadoop / Redis
Kubernetes / Docker / DevOps
Nginx / Git / Tools / OpenStack
大家好,我是民工哥!
今天通过以下展示不同情况下的配置:location 路径、root 路径、alias 路径、proxy_pass 代理路径。
然后对比这几个配置路径地址,建议 location 后面都带上斜杠。
基础配置说明
# 进程数量
worker_processes 1;
events {
# 最大连接数量
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
演示如何强制http跳转https
server {
listen 80;
server_name test.com;
# http强制跳转到https
rewrite ^(.*)$ https://$server_name$1 permanent;
}
演示如何配置微信支付的校验文件
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;
}
}
演示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;
}
}
演示请求后台接口代理配置
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地址
}
}
演示前端项目如何部署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 不同访问路径和代理的配置,注意有加斜杠和不加的区别。
来源:https://blog.csdn.net/bacawa/article
/details/129105125
👍 如果你喜欢这篇文章,请点赞并分享给你的朋友!
公众号读者专属技术群
构建高质量的技术交流社群,欢迎从事后端开发、运维技术进群(备注岗位,已在技术交流群的请勿重复添加微信好友)。主要以技术交流、内推、行业探讨为主,请文明发言。广告人士勿入,切勿轻信私聊,防止被骗。
扫码加我好友,拉你进群
PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我们吧!