我想检查https服务器块中的$host变量中的端口号。如何才能做到这一点?
在端口80的服务器块中。我重定向到端口443的https服务器块。如果这是完整的请求http://localhost:52379/Dika/unityphp/gateway.php
。由于端口52379已经被端口转发到端口80,我假设$host变量看起来像这样localhost:52379
,request_uri是/Dika/unityphp/gateway.php
。
server {
# Configuration for port 80. Unity POB Client
listen 80;
server_name localhost;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /code;
index index.php index.html;
# Redirect HTTP to HTTPS
return 307 https://$host$request_uri;
}
server {
# Configuration for port 443. For https
listen 443 ssl;
listen [::]:443 ssl;
index index.php index.html;
server_name localhost;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /code;
include /etc/nginx/certs/self-signed.conf;
include /etc/nginx/certs/ssl-params.conf;
#if $host contains port number 52379 or 80 return true
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:52379;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
字符串
我很感激你的帮助谢谢
1条答案
按热度按时间axzmvihb1#
传入nginx服务器的请求是由nginx
config
文件定义的,就像你拥有的那样。注意如果不匹配块,nginx将返回
404
状态码,如果nginx重定向到未定义的路由,它将返回502
状态码,因为没有网关每个
server block
都有它自己的端口,通过使用'listening'属性定义它,每个块都有它自己的代码,无论你想重定向它还是只是传递你在vps上运行的应用程序的本地主机地址。这里你使用ssl来升级链接到https。ssl https请求的默认端口是443,你可以使用你指定的
servername
属性来访问它。当你第一次创建nginx
config
文件时,它的默认端口是80
,你可以手动更改它。因此,如果您想根据端口执行不同的作业,可以为服务器定义多个
server blocks
也可以在
config file
中定义config rules
,如下所示:字符串