技术解析

nginx 中在 proxy_pass 的 url 后面加/的问题
0
2021-05-19 16:28:52
idczone

我希望用 /auth/api/values 访问 /api/values,但是按照下面配置是返回的是 nginx 的默认界面

server {                                                                            
     listen 80;
     server_name xxx.xxx.xxx.xxx;
     location ^~ /auth/ {
         proxy_pass         http://localhost:5000/;
         proxy_http_version 1.1;
         proxy_set_header   Upgrade $http_upgrade;
         proxy_set_header   Connection keep-alive;
         proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
     }
 }

但按照下面设置并且用 /auth/values 可以正常访问 api

server {                                                                            
     listen 80;
     server_name xxx.xxx.xxx.xxx;
     location ^~ /auth/ {
         proxy_pass         http://localhost:5000/api/;
         proxy_http_version 1.1;
         proxy_set_header   Upgrade $http_upgrade;
         proxy_set_header   Connection keep-alive;
         proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
     }
 }

按道理这两个方法不都是应该访问 /api/values 吗?
nginx.conf 如下

user www-data;                                                                                  
  2 worker_processes auto;
  3 pid /run/nginx.pid;
  4 
  5 events {
  6         worker_connections 768;
  7         # multi_accept on;
  8 }
  9 
 10 http {
 11 
 12         ##
 13         # Basic Settings
 14         ##
 15 
 16         sendfile on;
 17         tcp_nopush on;
 18         tcp_nodelay on;
 19         keepalive_timeout 65;
 20         types_hash_max_size 2048;
 21         # server_tokens off;
 22 
 23         # server_names_hash_bucket_size 64;
 24         # server_name_in_redirect off;
 25 
 26         include /etc/nginx/mime.types;
 27         default_type application/octet-stream;
 28
 29         ##
 30         # SSL Settings
 31         ##
 32 
 33         ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
 34         ssl_prefer_server_ciphers on;
 35 
 36         ##
 37         # Logging Settings
 38         ##
 39 
 40         access_log /var/log/nginx/access.log;
 41         error_log /var/log/nginx/error.log;
 42 
 43         ##
 44         # Gzip Settings
 45         ##
 46 
 47         gzip on;
 48         gzip_disable "msie6";
 49 
 50         # gzip_vary on;
 51         # gzip_proxied any;
 52         # gzip_comp_level 6;
 53    		# gzip_buffers 16 8k;
 54         # gzip_http_version 1.1;
 55         # gzi美国服务器p_types text/plain text/css application/json application/javascript text/xml applic    ation/xml application/xml+rss text/javascript;
 56 
 57         ##
 58         # Virtual Host Configs
 59         ##
 60 
 61         include /etc/nginx/conf.d/*.conf;
 62         #include /etc/nginx/sites-enabled/*;
 63 }

就是加 / 和不加的区别。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服