2016-11-17 4 views
0

я работаю с Docker и Nginx, и это мой default.conf файл:Nginx порт доступен для все URL

server{ 
     listen 80 default_server; 
     server_name localhost; 

     location/{ 
       root /usr/share/nginx/html; 
     } 
} 

server{ 
     listen 80; 
     server_name blog.domain.com; 

     location/{ 
       proxy_pass http://MY-IP:8080; 
     } 
} 

Так быстро объяснение:

  • Хост УСПЕШНЫМ служит HTML папки, нет проблема для этого.
  • Адрес blog.domain.com служит для приложения Wordpress, работающего на порту 8080, без проблем.

Я другое приложение, работающее на порту 8081 (PhpMyAdmin) и моя проблема, если я пытаюсь http://MY-IP:8081 или blog.domain.com:8081 это нормально, я могу получить доступ к PhpMyAdmin ... Почему?

Я не хочу, чтобы этот порт 8081 был доступен для всех URL-адресов на моем сервере.

+0

Является ли ваш IP сопоставлен с этим URL-адресом? – Techiee

ответ

0

PHPMyAdmin будет работать только с директивой proxy_pass. Вы можете отказать в размещении на всей земле. Я предполагаю, что Nginx не является сервером, прослушивающим порт 8080, а также 80, но что-то еще прослушивает 8080, и вы хотите иметь прокси-сервер Nginx на этом сервере. В таком случае это будет работать. Это минимальная конфигурация:

# first server block  
server { 
    listen 80; 
    server_name domain.com; 
     location/{ 
     root /usr/share/nginx/html;     
        } 
     ## set phpmyadmin to a different path 
     location /phpmyadmin { 
     proxy_pass   http://127.0.0.1:8081/phpmyadmin; 
     #allow 1.1.1.1; 
     # deny all; 
          } 
     } # end server 
# second server block  
server { 
    listen 80; 
    server_name blog.domain.com; 
     location/{ 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header Host  $http_host; 
     proxy_pass   http://i.p.v.4:8080; 
        } 
     } # end server 
Смежные вопросы