我的客户端 (next.js) 应用程序在端口运行3000
我的服务器(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) 我无法从 Ubuntu 20.04 操作系统中的 Nginx 版本 1.18 的响应标头中删除“服务器”标头。
我已完成以下步骤:
sudo apt-get 更新
使用命令“sudo apt-get install nginx-extras”安装了 nginx-extras
添加了代码片段“more_clear_headers Server;” 在 nginx.conf 文件的 http 部分。
重新启动Nginx服务后,显示“未知指令more_clear_headers”错误。
但是,我可以通过执行上述步骤从 Ubuntu 14.04 操作系统中的 Nginx 版本 1.4.6 的响应标头中删除“服务器”标头。
谁能帮助我如何从 Ubuntu 20.04 操作系统中的 Nginx 1.18 响应标头中删除“服务器”标头?
提前致谢
我喜欢使用 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 服务器上运行带有 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.conf 中 ssl_verify_depth 是什么意思?文档不是很详细,只有这么一句话:
设置客户端证书链中的验证深度。
增加或减少有什么作用?我注意到增加它会使 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) 我的问题似乎与$_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) 我想将 /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) 我当前的配置如下所示。我有从 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) 我尝试使用 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 ×10
nginx-config ×10
docker ×2
php ×2
angular ×1
cloudflare ×1
graphql ×1
laravel ×1
next.js ×1
node.js ×1
reactjs ×1
ubuntu ×1
ubuntu-18.04 ×1
webserver ×1