我在linux服务器上有一个服务,它向http://localhost:9500提供http请求。同一个linux服务器已经配置为通过nginx在端口443上为域为https://example.com的公共网站提供服务。我可以配置nginx也在https://example.com:9500上提供localhost服务吗?
我当前的nginx配置
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
server_tokens off;
root /home/app/example.com/public;
ssl_certificate /etc/nginx/ssl/example.com/1722357/server.crt;
ssl_certificate_key /etc/nginx/ssl/example.com/1722357/server.key;
ssl_protocols TLSv1.2;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256
-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA38
4;
ssl_prefer_server_ciphers off;
ssl_dhparam /etc/nginx/dhparams.pem;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/example.com-error.log error;
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
1条答案
按热度按时间pgky5nke1#
你不能绑定到已经被使用的同一个端口。你可以在你选择的任意路径上反向代理到上游服务器。你必须选择一个还没有被用于服务现有服务器内容的路径。
假设路径
/service
尚未被使用,您可以使用location
指令来代理上游服务器,如下所示:然后,您将能够在以下位置访问该服务:https://example.com/service/
这将在将路径传递给上游服务之前剥离路径的
/service/
部分。根据服务的功能,您可能需要发送额外的头以使其正常工作。例如,重定向到另一个位置可能无法工作,因为反向代理没有将正确的主机(和协议-参见X-Forwarded-Proto
)信息传递给服务。有关详细信息,请参阅本介绍性指南:https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/