Опыт, в котором nginx реализует переадресацию запросов на основе URL-адресов.
Поскольку это завершило внутреннее и внешнее развертывание распределенной файловой системы с использованием fastdfs, приложение развернуто на порт 8088, а его система фонового управления развернута на порт 8089 (тот же сервер интрасети), службы системы фонового управления для запроса сервис fastdfs можно запросить напрямую (ресурсы того же сервера), но теперь мы используем только систему фонового управления (проект Springboot), а IP, который не выделен через общедоступную сеть, может получить доступ только к системе фонового управления, чтобы прямой доступ к fastdfs Интерфейс сервиса должен быть подключен к общедоступной сети сервера, но это ограничивает доступ наших пользователей (я не могу каждый раз заходить на ваш сервер, думаю в других местах тоже можно зайти)
Прокси-сервер: SockerServer прослушивает определенный порт, подключается к указанному порту сервера в соответствии с сообщением http и выполняет запросы данных.
- HTTP-прокси
Запрос http проходит через прокси-сервер, и прокси-серверу нужно только переслать соответствующий текст ответа http.
- HTTPS-прокси
После прохождения запроса https через прокси-сервер будет отправлено сообщение CONNECT для установления туннеля с прокси-сервером. Если прокси-сервер возвращает HTTP 200, установление выполнено успешно. Последующему прокси-серверу нужно только переслать данные. Фактически, рукопожатие SSL/TLS все еще происходит на клиенте и реальном сервере.
ProxyServlet
-
Поскольку порт 8089 фонового проекта может получить доступ к службе fastdfs сервера, моя первая мысль — использовать Springboot
ProxyServlet
Проксировать указанный запрос на порт сервера 8088
Основным сервлетом Spring boot является DispatcherServlet SpringMVC, а его URL-шаблон по умолчанию — "/". Если мы хотим добавить различные вызовы (другие серверные интерфейсы) к URL-адресу, нам нужно создать новый прокси-сервлет, который будет использовать
ServletRegistrationBean
, создать новыйProxyServlet
Для управления мониторингом различных портов и отправки данных и регистрации их в управлении Springboot.servletContext
Medium (указать указанный сервер и порт, интерфейс переадресации запросов)
полагаться
<dependency>
<groupId>org.mitre.dsmiley.httpproxy</groupId>
<artifactId>smiley-http-proxy-servlet</artifactId>
<version>1.7</version>
</dependency>
настроить
### 配置代理
#请求resource时代理转发到端口8088项目中
proxy.test.servlet_url_one= /resource/*
proxy.test.target_url_one= https://localhost:8088
@Component
@Data
public class ProxyFilterServlet {
@Value("${proxy.test.target_url_one}")
private String targetUrl;
@Value("${proxy.test.servlet_url_one}")
private String servletUrl;
}
изменить конфигурацию добавить
@Configuration
public class ProxyServletConfig {
@Autowired
private ProxyFilterServlet proxyFilterServlet;
//多个代理servlet可以配置多个bean
@Bean
public ServletRegistrationBean servletRegistrationBean(){
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new ProxyServlet(), proxyFilterServlet.getServletUrl());
//这个setName必须要设置,并且多个的时候,名字需要不一样
servletRegistrationBean.setName("go_backend");
servletRegistrationBean.addInitParameter("targetUri", proxyFilterServlet.getTargetUrl());
servletRegistrationBean.addInitParameter(ProxyServlet.P_LOG, "false");
return servletRegistrationBean;
}
}
Соединение с целевым сервером устанавливается через контейнер сервлетов, ведь профессионального прокси-сервера, такого как nginx, не существует.
nginx - переадресация через прокси
- В это время я подумал о добавлении уровня nginx между серверами для пересылки разных запросов на обслуживание в разные API-интерфейсы порта для обработки.
Перенесите запрос из внешней сети, который необходимо запросить, на внутренний сетевой порт того же сервера
server {
listen 80;
server_name 127.0.0.1;
location / {
proxy_pass http://127.0.0.1:3000;
}
location ~ /api/ {
proxy_pass http://172.30.1.123:8081;
}
}
Справочная запись в блоге:
https://blog.csdn.net/wohaqiyi/article/details/81327512
https://juejin.cn/post/6844903473163550734