Proxy server: sockerserver listens to a certain port, connects to the specified server port according to the http message, and makes data requests
-http proxy
http requests pass through the proxy server, and the proxy server is only responsible for forwarding the corresponding The http response body is fine.
- https proxy
When the https request passes through the proxy server, a connect message will be sent to establish a tunnel with the proxy server. If the proxy server returns http 200, the establishment is successful. Subsequent proxy servers only need to be responsible for forwarding data. In fact, the SSL/TLS handshake still occurs between the client and the real server.
proxyservlet
Because the 8089 port of the background project can access the server fastdfs service, the first thing I thought of was to use springboot's proxyservlet to proxy the specified request to the server. Port 8088
The main servlet of spring boot is the dispatcherservlet of springmvc. Its default url-pattern is "/". If we want to add different calls (other server interfaces) to a certain url, You need to create a new proxy servlet. You will use servletregistrationbean to create a new proxyservlet to handle the monitoring of different ports and data sending, and register it in the servletcontext managed by springboot (set the specified server and port, and the interface for request forwarding. )
##Dependency
<dependency> <groupid>org.mitre.dsmiley.httpproxy</groupid> <artifactid>smiley-http-proxy-servlet</artifactid> <version>1.7</version> </dependency>
Configuration
### 配置代理 #请求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; }
Change config add
@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; } }
Establish a connection with the target server through the servlet container. After all, there is no professional proxy server like nginx.
nginx-proxy forwarding
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; } }
The above is the detailed content of How nginx forwards requests based on URL. For more information, please follow other related articles on the PHP Chinese website!