我遇到了这个奇怪的问题。我有一个本地网络,运行着一个带有我的 gitlab 实例和一些网页的服务器。我的反向代理的配置如下:
server {
server_name my.website.com;
location / {
proxy_pass http://127.0.0.1:8086;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/my.website.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/my.website.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = my.website.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name my.website.com;
return 404; # managed by Certbot
}
server {
listen 80;
server_name service1.website.com;
root /var/www/service1;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php7.4-fpm.sock; # Adjust this to your PHP-FPM socket path/version
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
server {
listen 80;
server_name api.website.com;
root /var/www/api;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php7.4-fpm.sock; # Adjust this to your PHP-FPM socket
path/version
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
我已经审查了实际的 URL,但其余部分保持不变。
我在路由器上打开了相应的端口,以便可以从外部访问网站和服务。但是,如果我尝试从服务器正在运行的本地网络连接到相同的 URL,我会一直超时。获取其他信息的唯一方法是直接输入 IP 和端口,然后我至少会收到 SSL 错误,但我知道这不是正确的方法。
我需要设置我的反向代理,以便也允许来自本地主机的连接,就像允许来自外部网络的连接一样。
我查看了 nginx 配置,但没有发现配置存在任何潜在问题。我还查看了 /etc/hosts 文件和防火墙设置,但没有发现任何可疑之处。
我将非常感激您的帮助,谢谢。
编辑:我查看了我的路由器是否支持 NAT 环回,结果确实支持。我甚至可以 ping 到服务器的 URL,但每次连接都会超时。