如何在nginx中从$host检查端口号

b1uwtaje  于 2024-01-06  发布在  Nginx
关注(0)|答案(1)|浏览(238)

我想检查https服务器块中的$host变量中的端口号。如何才能做到这一点?
在端口80的服务器块中。我重定向到端口443的https服务器块。如果这是完整的请求http://localhost:52379/Dika/unityphp/gateway.php。由于端口52379已经被端口转发到端口80,我假设$host变量看起来像这样localhost:52379,request_uri是/Dika/unityphp/gateway.php

  1. server {
  2. # Configuration for port 80. Unity POB Client
  3. listen 80;
  4. server_name localhost;
  5. error_log /var/log/nginx/error.log;
  6. access_log /var/log/nginx/access.log;
  7. root /code;
  8. index index.php index.html;
  9. # Redirect HTTP to HTTPS
  10. return 307 https://$host$request_uri;
  11. }
  12. server {
  13. # Configuration for port 443. For https
  14. listen 443 ssl;
  15. listen [::]:443 ssl;
  16. index index.php index.html;
  17. server_name localhost;
  18. error_log /var/log/nginx/error.log;
  19. access_log /var/log/nginx/access.log;
  20. root /code;
  21. include /etc/nginx/certs/self-signed.conf;
  22. include /etc/nginx/certs/ssl-params.conf;
  23. #if $host contains port number 52379 or 80 return true
  24. location ~ \.php$ {
  25. try_files $uri =404;
  26. fastcgi_split_path_info ^(.+\.php)(/.+)$;
  27. fastcgi_pass php:52379;
  28. fastcgi_index index.php;
  29. include fastcgi_params;
  30. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  31. fastcgi_param PATH_INFO $fastcgi_path_info;
  32. }
  33. }

字符串
我很感激你的帮助谢谢

axzmvihb

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,如下所示:

  1. map $server_port $port_config {
  2. default "default_config";
  3. 80 "port_80_config";
  4. 443 "port_443_config";
  5. }
  6. server {
  7. listen 80;
  8. server_name example.com;
  9. location / {
  10. # Use the configuration based on the port
  11. include $port_config;
  12. }
  13. }
  14. server {
  15. listen 443 ssl;
  16. server_name example.com;
  17. ssl_certificate /path/to/ssl_certificate;
  18. ssl_certificate_key /path/to/ssl_certificate_key;
  19. location / {
  20. # Use the configuration based on the port
  21. include $port_config;
  22. }
  23. }
  24. # Define configurations for different ports
  25. location @default_config {
  26. return 404;
  27. }
  28. location @port_80_config {
  29. # Configuration for port 80
  30. return 200 "This is port 80 configuration\n";
  31. }
  32. location @port_443_config {
  33. # Configuration for port 443 (HTTPS)
  34. return 200 "This is port 443 configuration\n";
  35. }

字符串

展开查看全部

相关问题