在nginx配置文件中配置如下
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
#include /etc/nginx/conf.d/*.conf;
server {
listen 8083;
server_name 106.55.9.3; #此处设置的是服务器ip
location / {
root /usr/share/nginx/html;
index index.html;
try_files $uri $uri/ /index.html;
}
location /im {
alias /home/poetry-vue3;
index index.html;
try_files $uri $uri/ /index.html;
}
location ~ /api/ {
fastcgi_buffers 256 128k;
chunked_transfer_encoding off;
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://106.55.9.3:8081;
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /socket {
proxy_pass http://127.0.0.1:9324;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 600s;
}
}
}
这里监听了8083的端口,在nginx启动的时候也映射了宿主机的8083:8083端口,
希望能通过8083转发到8081端口做后端的请求,前端请求路径:http://106.55.9.3:8083/api/webInfo
实际后端接口路径是 8081/webInfo
发现无法转发,不知道问题出在哪里,求解答~
rewrite去掉 proxy_pass后面结尾加/api/
proxy_pass http://xxx.xxxx:8081/api/;
我们首先看一下我们的服务里的静态文件
用nginx动静分离的概念就是,让nginx服务器运行静态文件,docker中的flask服务通过调用nginx运行的静态文件达到效果,也可以理解你自己搭建了一个cdn服务。
upstream agora_server{
server 127.0.0.1:81;
server 127.0.0.1:82;
server 127.0.0.1:83;
}
server {
listen 80;
#server_name www.agora.com;
location / {
proxy_pass http://agora_server;
}
location ~ .*\.(js|css|ico|png|jpg|eot|svg|ttf|woff) {
root /home/kies/www/static;
}
}
最后一个location就是我们静态文件的地址,nginx会根据这个目录下的内容启动服务。
此时启动会导致静态文件不能成功加载
2. 将MRoom项目中的MRoom/app/static文件复制到/home/kies/www/static下。
3. nginx -s reload 重载配置文件
4. 访问80端口,动静分离成功搭建!
提示
如果遇到不能成功搭建,请查看/var/log/nginx/下的报错日志,根据日志内容进一步完善项目。
关于agora这个开源项目 https://github.com/AgoraIO
针对所述问题,可能的原因有: 1. nginx配置文件有误; 2. 后端服务未正确启动或监听端口有误; 3. 防火墙等网络问题导致请求无法转发。
针对此问题,可以采取以下步骤进行排查和解决:
步骤1:检查nginx配置文件 首先,需要检查nginx配置文件中是否正确设置了代理相关参数。可以在nginx的配置文件中增加一个location配置段,以将请求代理到后端服务:
location /api/ {
proxy_pass http://backend:8081/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
其中,backend表示后端服务的IP地址,8081表示后端服务监听的端口号,/api/表示请求的路径。此配置中还设置了一些代理相关参数,如请求头中的Host信息、代理服务器真实IP地址等。
步骤2:检查后端服务是否正确启动 可以针对后端服务尝试通过curl等工具进行测试,看下是否能够正确访问到后端服务。若无法访问,则需要检查后端服务的配置和监听端口是否正确。
步骤3:检查网络设置 若nginx和后端服务运行在不同的主机上,则需要确认主机之间是否存在网络问题。可以通过ping等命令测试主机之间的连通性,确认网络是否通畅。同时还需要注意宿主机的防火墙等网络设置,如需开放端口等操作。
综上所述,可以通过检查nginx配置文件、后端服务是否正确启动,以及网络设置等方面进行排查和解决。