Nginx 根据路径将端口80请求重定向到不同的应用程序
我需要在同一台服务器上安装uWSGI应用程序和Kibana4/elastic搜索堆栈。只有当用户通过[server_IP]/charts/访问服务器,并且我希望通过[server_IP]访问Kibana4时,才需要使用uwsgi应用程序 两者都通过各自单独的conf文件在端口80上侦听,可以预见,uwsgi应用程序不允许Kibana4接收请求 如何调整conf文件以允许所需的访问?我有点困惑我需要使用什么(重写、重定向、其他什么?) 谢谢你的时间 用于uwsgi的nginx\u配置:Nginx 根据路径将端口80请求重定向到不同的应用程序,nginx,Nginx,我需要在同一台服务器上安装uWSGI应用程序和Kibana4/elastic搜索堆栈。只有当用户通过[server_IP]/charts/访问服务器,并且我希望通过[server_IP]访问Kibana4时,才需要使用uwsgi应用程序 两者都通过各自单独的conf文件在端口80上侦听,可以预见,uwsgi应用程序不允许Kibana4接收请求 如何调整conf文件以允许所需的访问?我有点困惑我需要使用什么(重写、重定向、其他什么?) 谢谢你的时间 用于uwsgi的nginx\u配置: serve
server {
server_name 192.168.250.37;
listen 80;
root /usr/local/wsgi;
access_log /var/log/nginx/graph_server/access.log;
error_log /var/log/nginx/graph_server/error.log;
client_max_body_size 500M;
proxy_read_timeout 600;
location / {
include uwsgi_params;
uwsgi_pass 192.168.250.37:9091;
uwsgi_read_timeout 600;
}
}
kibana4.conf:
server {
listen 80;
server_name 192.168.250.37;
#auth_basic "Restricted Access";
#auth_basic_user_file /etc/nginx/htpasswd.users;
location / {
proxy_pass http://192.168.250.37:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
nginx.conf:
user nginx;
worker_processes 4;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
index index.html index.htm;
# Increase header buffer size (needed for PHP)
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
# Update the logs to display the real IP address after removing the IP for
# the load balancers
set_real_ip_from redacted; # a
set_real_ip_from redacted; # b
real_ip_header X-Forwarded-For;
real_ip_recursive on;
# Custom logger to display the subdomain folder (if applicable)
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
log_format log_thing '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$http_x_forwarded_for" sub:"$subdomain"';
log_format i_server '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'filename:"$http_filename"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
server {
listen 80 default_server;
server_name localhost;
root /usr/share/nginx/html;
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}
一种方法是使用nginx作为反向代理,这实际上就是您正在做的事情。这样,您就有了一个在端口80上侦听的nginx虚拟主机,它将不同的位置转发给在系统不同端口上侦听的单独nginx vhost 如果nginx reverse proxy vhost看起来是这样的,那么如果所有位置都使用3个proxy\u set\u头行,则可以将它们移动到服务器块
server {
listen 80;
server_name 192.168.250.37;
port_in_redirect off
location / {
proxy_pass http://127.0.0.1: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;
}
location /charts {
proxy_pass http://127.0.0.1:8082;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
然后将Kibanaconf更改为侦听端口8081,将uwsgi更改为侦听端口8082
或者,您可以将两个vhost合并为一个,并且需要为每个位置下的根文件夹设置自定义别名并重新排列
server {
listen 80;
server_name 192.168.250.37;
root /usr/local/wsgi;
client_max_body_size 500M;
proxy_read_timeout 600;
#auth_basic "Restricted Access";
#auth_basic_user_file /etc/nginx/htpasswd.users;
location / {
proxy_pass http://192.168.250.37:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /charts {
include uwsgi_params;
uwsgi_pass 192.168.250.37:9091;
uwsgi_read_timeout 600;
}
}
谢谢你的帮助,我很感激。