Nginx. Kế thừa chỉ thị máy chủ.


9

Có cách nào để giảm xây dựng như:

server { 
  server_name regular_site; 
  location /api/ { 
     proxy_pass 127.0.0.1:5000;
  } 
  location / { 
     proxy_pass 127.0.0.1:3000;
  } 
} 

server { 
  server_name mobile_site; 
  location /api/ { 
     proxy_pass 127.0.0.1:5000;
  } 
  location / { 
     proxy_pass 127.0.0.1:3001;
  } 
} 

đến

server api { 
  location /api/ { 
     proxy_pass 127.0.0.1:5000;
  } 
}

server extends api { 
  server_name regular_site;
  location / { 
     proxy_pass 127.0.0.1:3000;
  } 
} 

server extends api { 
  server_name mobile_site;
  location / { 
     proxy_pass 127.0.0.1:3001;
  } 
} 

Bất kỳ lời khuyên nào khác để thoát khỏi phần api đều được chào đón.


Xin vui lòng dành một chút thời gian để đọc Câu hỏi thường gặp của chúng tôi. Câu hỏi của bạn xuất hiện ngoài chủ đề cho trang web này với tôi.
HoplessN00b

@ HoplessN00b, vâng, có vẻ như đó là ngoại lệ. Nhưng ở đây chúng tôi có 3000 câu hỏi về nginx, điều này thật lạ trong trường hợp này. Tôi chắc chắn rằng câu hỏi này không dành cho stackoverflow.
Nikolay Fominyh

Câu trả lời:


13

Bạn có thể làm điều đó khá dễ dàng với một includetuyên bố.

/etc/nginx/conf/api_defaults.conf

location /api/ { 
  proxy_pass 127.0.0.1:5000;
}    

Sau đó, trong vhostcấu hình chính của bạn .

/etc/nginx/sites-enabled/my_new_api.conf

server my_new_api {  
  server_name mobile_site;

  include "/etc/nginx/conf/api_defaults.conf";

  location / { 
    proxy_pass 127.0.0.1:3001;
  }         
}

Đó cũng là những gì tôi nghĩ, nói cách khác, khối vị trí không được kế thừa cho khối máy chủ. Điều này không giống như cách Apache thực hiện, nơi bạn có thể có các vị trí được xác định bên ngoài virtualhost, được kế thừa bởi tất cả các virtualhost. Với Nginx, bạn phải bao gồm rõ ràng các cấu hình chung, trong mỗi khối máy chủ.
JM Becker
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.