标签: nginx-config

Nginx + GraphQL 连接被拒绝

  1. 我的客户端 (next.js) 应用程序在端口运行3000

  2. 我的服务器(graphql)应用程序在端口运行4000

我的网站是https://example.com,nginx将通过代理端口3000。

如果用户访问该站点,则页面加载成功。

但在幕后,在我的网页中,一些 api 请求被发送到 graphql 服务器。(http://localhost:4000)

此 api 请求失败。

我不知道为什么,但是当我访问http://example.com:4000/graphql成功加载的 graphql 游乐场(graphiql?)时,我可以发送一些查询并且结果显示得很好。但网页请求失败。

nginx/sites-enabled/example.com

server {
        listen 80;
        listen [::]:80;
        server_name www.example.com example.com;
        return 301 https://example.com$request_uri;
}


server {
    listen 80;
    listen [::]:80;
    server_name example.com;


    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot …
Run Code Online (Sandbox Code Playgroud)

nginx graphql next.js nginx-config

4
推荐指数
1
解决办法
6927
查看次数

在 Ubuntu 20.04 中从 Nginx 版本 1.18 的响应标头中删除“服务器”标头

我无法从 Ubuntu 20.04 操作系统中的 Nginx 版本 1.18 的响应标头中删除“服务器”标头。

我已完成以下步骤:

  1. sudo apt-get 更新

  2. 使用命令“sudo apt-get install nginx-extras”安装了 nginx-extras

  3. 添加了代码片段“more_clear_headers Server;” 在 nginx.conf 文件的 http 部分。

重新启动Nginx服务后,显示“未知指令more_clear_headers”错误。

但是,我可以通过执行上述步骤从 Ubuntu 14.04 操作系统中的 Nginx 版本 1.4.6 的响应标头中删除“服务器”标头。

谁能帮助我如何从 Ubuntu 20.04 操作系统中的 Nginx 1.18 响应标头中删除“服务器”标头?

提前致谢

webserver nginx nginx-config

4
推荐指数
1
解决办法
6453
查看次数

如何在 nginx 中为某些文件扩展名添加带有代理传递的缓存控制标头

我喜欢使用 nginx 添加缓存控制标头来获取某些扩展名,例如 .jpg 等,但到目前为止我在网上找到的一些解决方案,我无法让它工作。我会告诉你我尝试过什么。

我在站点的 .conf 文件中的不同位置尝试了以下变体,当我尝试时,站点变成空白,并且在控制台上发现了很多 404 错误。该网站是用 React 开发的。

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
    expires 1d;
    add_header Cache-Control "public, no-transform";
}
Run Code Online (Sandbox Code Playgroud)

我的conf 文件如下所示。问题是我必须进行反向代理,因为这些站点实际上托管在 Docker 容器中。

 server {
    server_name mysite.net;
    root         /usr/share/nginx/html;

    location / {
        proxy_pass http://web:3005/;
    }

    location /api/ {
        rewrite ^/api(/.*)$ $1 break;

        proxy_pass  http://api:5005/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_redirect    off;
        fastcgi_read_timeout 1200;
        proxy_read_timeout 1200;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/mysite.net-0001/fullchain.pem; # managed by Certbot …
Run Code Online (Sandbox Code Playgroud)

nginx cache-control nginx-reverse-proxy nginx-config

4
推荐指数
1
解决办法
5931
查看次数

如何在 AWS EC2 上使用 Node.js 后端在 Nginx 上运行 React 应用程序?

我正在尝试在 Nginx 服务器上运行带有 Node.js 后端的 React 应用程序。

这是 nginx.conf 文件中我的服务器块:

include /etc/nginx/conf.d/*.conf;

    server {
        listen       80;
        listen       [::]:80;
        server_name  _;
        root         /usr/share/nginx/folder-name/frontend/build;
        index index.html index.htm;

        location / {
                proxy_pass http://localhost:5000;
        }
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;



        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
Run Code Online (Sandbox Code Playgroud)

build文件夹包含编译后的react js代码(使用npm run build) Node.js 后端使用 pm2/forever 在端口 5000 上运行。

重启Nginx服务器后,服务器IP上出现react UI,但UI扭曲。另外,我无法访问我的后端 APIMyIP/api/endpoint …

nginx node.js reactjs nginx-location nginx-config

4
推荐指数
1
解决办法
5188
查看次数

nginx.conf 中的 ssl_verify_depth 是什么意思?

我想知道 nginx.conf 中 ssl_verify_depth 是什么意思?文档不是很详细,只有这么一句话

设置客户端证书链中的验证深度。

增加或减少有什么作用?我注意到增加它会使 nginx 更有可能接受证书,但这是为什么呢?

nginx nginx-config

4
推荐指数
1
解决办法
7429
查看次数

所有页面都显示 404 Not Found Nginx 但主页工作正常

我正在运行一个 PHP 网站,其中所有子页面都显示 404 Not Found Nginx 但主页和管理面板工作正常。我正在运行在 Nginx 服务器上运行的 PHP 网站 -

这是我的默认 Nginx 文件

server {
listen 80 default_server;
listen [::]:80 default_server;

# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in …
Run Code Online (Sandbox Code Playgroud)

php nginx nginx-config

3
推荐指数
1
解决办法
4364
查看次数

nginx 上的 $_POST 为空

我的问题似乎与$_POST 类似,为空。Nginx OSx$_POST 在 nginx 中为空$_GET 已填充,但 $_REQUEST 为空,但是我找不到适合我的解决方案。

长话短说,我无法将 POST 请求发送到server.php服务器上指定的文件。

假设 myserver.php仅包含以下内容:

<?php var_dump($_REQUEST);
Run Code Online (Sandbox Code Playgroud)

我的sites-available/domain.tld文件包含以下内容:

server {

    root /var/www/domain.tld/current/dist;
    index index.html index.htm;

    server_name domain.tld;


    location / {
        try_files $uri $uri/ index.php?$query_string =404;
    }

    location ~ \.php$ {
            #limit_except POST {
            #    allow 127.0.0.1;
            #    deny  all;
            #}

            #if ( $request_method !~ ^POST$ ) {
            #    return 405;
            #}

            include snippets/fastcgi-php.conf;

            fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
            #fastcgi_param REQUEST_METHOD $request_method;
            fastcgi_param …
Run Code Online (Sandbox Code Playgroud)

php ubuntu nginx nginx-config ubuntu-18.04

3
推荐指数
1
解决办法
4900
查看次数

当挂载 /etc/nginx/ 容器时不运行

我想将 /etc/nginx 文件夹安装到主机上的自定义文件夹。但是,每当我尝试此操作时,容器根本不运行。安装其他任何东西似乎都没有问题,尽管我希望它安装的文件夹始终是空的。

我尝试使用 /usr/local/nginx/conf 或 /usr/local/etc/nginx 而不是 /etc/nginx,但该文件夹始终为空。虽然这里容器至少可以运行。这让我相信正是这种特定的安装导致了问题。

这就是我想做的。

docker run -p 80:80 -p 443:443 -v /home/pi/nginx_files/config:/etc/nginx -v /home/pi/nginx_files/certs:/etc/ssl/private -d nginx
Run Code Online (Sandbox Code Playgroud)

正如我尝试过的那样,容器似乎与任何其他文件夹一起运行

docker run -p 80:80 -p 443:443 -v /home/pi/nginx_files/config:/etc/nginx/b -v /home/pi/nginx_files/certs:/etc/ssl/private -d nginx
Run Code Online (Sandbox Code Playgroud)

只是为了看看是否有任何不存在的文件夹没有这个问题。

在此之前,我尝试使用 docker Composer 和 docker-compose.yaml

version: '3'

services:
  reverse:
    container_name: reverse
    hostname: reverse
    image: nginx
    ports:
      - 80:80
      - 443:443
    volumes:
      - <path/to/your/config>:/etc/nginx
      - <path/to/your/certs>:/etc/ssl/private
Run Code Online (Sandbox Code Playgroud)

tried docker-compose up
Run Code Online (Sandbox Code Playgroud)

然而它遇到了同样的问题,它甚至没有启动容器。错误信息:

Creating network "nginx_files_default" with the default driver
Creating reverse ... done
Attaching to reverse …
Run Code Online (Sandbox Code Playgroud)

nginx docker nginx-config

3
推荐指数
1
解决办法
7496
查看次数

502 Bad Gateway for Proxy Pass to HTTPS API 服务器位于 Cloudflare 代理后面

我当前的配置如下所示。我有从 VM1 上的 EC2 实例交付的前端。HTTPS API 服务器位于由 Cloudfare 代理的 VM2 上。如果我直接从 Web 浏览器调用 VM2 上的 API,则一切正常。但是,如果我使用 proxy_pass 与 VM2 上的 API 进行通信,则会抛出 502 bad gateway 错误。

在此输入图像描述 HTTPS API 服务器位于 Cloudflare 代理后面。我的 NGINX 配置如下。

location /mainPageApi {
        proxy_pass https://apiserver.com/mainPageApi;
        proxy_set_header Host $host;
        proxy_ssl_name $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        }
Run Code Online (Sandbox Code Playgroud)

检查日志,我收到以下错误:

[error] 7109#7109: *3 SSL_do_handshake() failed (SSL: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:SSL alert number 40) while SSL handshaking to upstream, client: <Client IP>, server: <VM1_Host_Name>, request: "POST …
Run Code Online (Sandbox Code Playgroud)

nginx cloudflare angular nginx-reverse-proxy nginx-config

3
推荐指数
1
解决办法
7624
查看次数

Ngnix laravel docker项目返回错误502 bad gateway

我尝试使用 ngnix 在 docker 容器内运行 laravel。

目录结构:

在此输入图像描述

文件docker-compose.yml

version: '3'
services:
    nginx:
      image: nginx:stable-alpine
      container_name: nginx
      ports:
        - "${HOST_PORT}:80"
      volumes:
        - ../:/var/www/html
        - ./etc/nginx/default.conf:/etc/nginx/conf.d/default.conf
      depends_on:
        - php
    php:
        build:
          context: .
          dockerfile: ../Dockerfile
        restart: always
        container_name: php
        volumes:
            - "../:/var/www/html"
        ports:
          - "9000:9000"
    mongodb:
        image: mongo:latest
        container_name: mongodb
        ports:
            - "27017:27017"
    redis:
        image: redis:latest
        container_name: redis
        restart: always
        ports:
            - "6379:6379"
Run Code Online (Sandbox Code Playgroud)

文件Dockerfile

FROM php:7.4-apache

RUN apt-get update && apt-get install --yes --no-install-recommends \
    libssl-dev

RUN docker-php-ext-install …
Run Code Online (Sandbox Code Playgroud)

nginx laravel docker docker-compose nginx-config

3
推荐指数
1
解决办法
8035
查看次数