如何让局域网设备访问仅信任127.0.0.1的Docker化Symfony站点
局域网访问Docker部署的Symfony站点问题求助
我尝试通过局域网内的手机访问docker-compose部署的Symfony开发站点(地址为https://lan_server_ip:8000)以检查CSS效果,却遭遇诸多问题,希望找到简单的代理类方案实现局域网访问。
核心问题:Symfony应用仅信任127.0.0.1这一个IP,且我不想修改应用代码——为设备添加IP不切实际,尤其是面对动态IP的情况。
我的设想:
- 新增代理接口替代主Nginx,让站点认为所有请求均来自主机127.0.0.1
- 修改现有Nginx配置,新增server或location规则。我曾尝试改写请求头,但未成功
目前我使用浏览器响应式设计模式,但效果远不够准确及时,只能通过生产站点排查问题。我考虑新增容器处理此需求,但不知如何实现。
当前docker-compose.yaml配置
version: "3" services: nginx: container_name: nginx image: "${NGINX_IMAGE}" build: build/nginx restart: always env_file: .env ports: - "8000:443" volumes: - "${APP_HOST_NGINX_CONF}:${APP_CONTAINER_NGINX_CONF}:ro" - "${APP_HOST_CERTS}:${APP_CONTAINER_CERTS}" - "${APP_HOST_DIR}/public:${APP_CONTAINER_DIR}/public:ro" - "/etc/localtime:/etc/localtime:ro" networks: app_network: depends_on: - app app: container_name: app image: "${APP_IMAGE}" restart: always build: build/app env_file: .env networks: app_network: volumes: - type: bind source: ${APP_HOST_DIR} target: ${APP_CONTAINER_DIR} - type: bind source: ${PHP_INI} target: /usr/local/etc/php/php.ini - type: bind source: /etc/localtime target: /etc/localtime:ro depends_on: - database database: container_name: mariadb image: "mariadb:${MARIADB_VERSION}" restart: always env_file: .env volumes: - "${SQL_INIT}:/docker-entrypoint-initdb.d" - type: bind source: ${MARIADB_DATA_DIR} target: /var/lib/mysql - type: bind source: ${MARIADB_LOG_DIR} target: /var/logs/mysql - type: bind source: ${MARIADB_CERTS_DIR} target: /etc/certs/ - type: bind source: /etc/localtime target: /etc/localtime:ro ports: - "3306:3306" networks: app_network: command: [ "mysqld", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_general_ci", "--require_secure_transport=OFF", "--bind-address=0.0.0.0", "--ssl-key=/etc/certs/server-key.pem", "--ssl-cert=/etc/certs/server-cert.pem", "--ssl-ca=/etc/certs/ca-cert.pem", ] networks: app_network:
当前nginx.conf配置
#./images/nginx/build/default.conf server { listen 80 default_server; server_name _; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name 127.0.0.1; ssl_certificate /etc/nginx/certs/dev.crt; ssl_certificate_key /etc/nginx/certs/dev.key; index index.php index.html; root /var/www/app/public; client_max_body_size 128M; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass app:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } error_log /var/log/nginx/app.error.log; access_log /var/log/nginx/app.access.log; }
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

