서버 이름으로 Nginx 전달

서버 이름으로 Nginx 전달

http(및 https)를 제공하는 여러 고정식 서비스가 있습니다. 내부 http 포트(80)는 도커 수준에서 다른 포트에 매핑되므로 호스트에서 연결할 수 있습니다. 그리고 이것은 잘 작동합니다.

curl localhost:1234

컨테이너의 http 서비스로 이동합니다.

이제 포트를 지정하지 않고도 DNS를 통해 연결할 수 있기를 바랍니다(이 포트 매핑으로부터 클라이언트를 보호하고 싶습니다). nginx를 사용하여 http://myserver1-> 로 요청을 전달하고 싶습니다 http://localhost:1234.

nginx를 그런 식으로 구성할 수 있나요? 다음과 같이 다중 전달을 구성할 수 있습니까?

http://myserver1  --> http://localhost:1234
http://myserver2  --> http://localhost:1235
...

답변1

예, 그럴 수 있습니다.

server_name 옵션은 다음과 같이 동일한 nginx 서버에서 호스팅되는 여러 사이트 간의 가장 일치하는 항목을 찾는 데 사용됩니다.

server {
  listen 80;
  listen [::]:80;
  server_name myserver1; 

그리고 또 하나는 좋아요

server {
  listen 80;
  listen [::]:80;
  server_name myserver2; 

이렇게 하면 포트 80에서 실행될 수 있고 호출 여부에 따라 일치할 수 있습니다.http://myserver1또는http://myserver2.

이제 서비스에 연결하는 방법은 무엇입니까? 다음과 같은 업스트림 서비스 제공자를 정의할 수 있습니다.

#place this outside of the 'server{' block
upstream server1 {
  server localhost:1234;
} 

그런 다음 다음을 통해 리디렉션합니다.

# place this inside the 'server{' block
location / {
  proxy_pass http://server1;
}

관련 정보