Flask有这个设置SERVER_NAME,大部分时间都很方便.由于我的应用程序有后台任务,我使用Flask上下文.要使上下文工作,SERVER_NAME应该设置.
当SERVER_NAME设置传入的请求进行检查,以匹配该值或路径没有找到.当放置一个nginx(或其他网络服务器在前面时,SERVER_NAME还应该包括端口和反向代理应该处理重写的东西,隐藏端口号从外部世界(它做).对于会话cookie在现代浏览器中工作代理通网址的名称应该是一样的SERVER_NAME,否则浏览器拒绝发送的cookie.这可以通过增加官方来解决hostname的/etc/hosts,它指向127.0.0.1.
有一件事我还没弄清楚,它是后台任务中的网址.url_for与_external选项一起使用,以在其发出的邮件中生成URL.但是该URL包含端口,这当然不同于443我运行的nginx端口...
从中移除端口SERVER_NAME会使第一段中描述的内容失败.
那么我处理url_for邮件的最佳选择是什么?创建单独的配置设置?创建我自己的url_for?
如何使用此模块将 Nginx 作为服务启动?
根据这个文档,它说:
默认情况下不构建此模块,应使用 --with-http_sub_module 配置参数启用它。
我不明白在哪里输入这个命令。是nginx service start --with-http_sub_module吗?那太令人困惑了。
当我输入时,nginx -V它显示--with-http_sub_module可用。
我正在使用proxy_pass并希望记录 proxy_pass 使用的 URI。
我可以记录$upstream_addr除 URI 本身之外的每个详细信息,例如进程的 (IP)。
我错过了什么还是这是不可能的?
这在我的 Nginx 配置中有效:
# This works
proxy_pass http://GitLab-CE:9080;
Run Code Online (Sandbox Code Playgroud)
...但这并不:
# does not work
set $upstream_gitlab GitLab-CE;
proxy_pass http://$upstream_gitlab:9080;
Run Code Online (Sandbox Code Playgroud)
这是从使用连字符和不同端口的不同工作示例复制的。
# this works
set $upstream_deluge binhex-delugevpn;
proxy_pass http://$upstream_deluge:8112;
Run Code Online (Sandbox Code Playgroud)
我想也许与破折号有关,但我有另一个配置,它的名称中也使用连字符(见上文)并且它有效。我尝试过各种形式的引用,但似乎都没有帮助。这里可能发生了什么?我很茫然。GitLab-CE 不起作用但 binhex-delugevpn 起作用是怎么回事?Nginx 是否看到 CE 有一些十六进制数学?
完整上下文:
# make sure that your dns has a cname set for gitlab and that your gitlab container is not using a base url
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name gitlab.*;
include /config/nginx/ssl.conf;
client_max_body_size 0;
# enable for ldap auth, fill in ldap …Run Code Online (Sandbox Code Playgroud) 我有 ngnix 代理到 nodejs 服务器。我试图在我的 nodejs 中读取请求客户端 IP 地址/主机名,但它总是
::ffff:127.0.0.1
Run Code Online (Sandbox Code Playgroud)
但是在我的nginx访问日志中,可以看到打印的客户端ip地址,不知道为什么我的nodejs服务器无法获取它。
x.x.x.x - - [24/Aug/2017:14:28:01 -0700] "GET ...."
Run Code Online (Sandbox Code Playgroud) 我是 Nginx 服务器的新手。最近开始工作 nginx 项目。我的任务是通过 nginx.conf 文件设置安全标头。我正确设置了一些标题,但无法为 Set-cookie 设置。我的要求是,在响应头中 Set-Cookie 应该具有 Secure 和 HTTPOnly 属性。在 nginx.conf 文件中添加了以下两个指令
set_cookie_flag HttpOnly Secure;
proxy_cookie_path / "/; HTTPOnly; Secure";
Run Code Online (Sandbox Code Playgroud)
也尝试了每一个和两个,但只有 HttpOnly 来了。请在下面查看我的 conf 文件片段
server {
listen 80;
server_tokens off;
server_name http://{{ getenv "PROXY_URL" }};
set_cookie_flag HttpOnly Secure;
proxy_cookie_path / "/; HTTPOnly; Secure";
include routes;
}
Run Code Online (Sandbox Code Playgroud)
请帮助我,我需要在这里添加什么或我错过了什么。
提前致谢。
nginx setcookie session-cookies nginx-reverse-proxy nginx-config
我使用 nginx 作为 http 服务的反向代理,使用如下配置:
location /jobexecutor/ {
proxy_pass http://jobexecutor:8080/jobexecutor/;
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 $scheme;
proxy_redirect off;
proxy_connect_timeout 75s;
}
Run Code Online (Sandbox Code Playgroud)
GET 请求被代理到服务很好,但是当我使用 POST 时,请求被代理到服务 OK,但主体是空的。当直接发布到服务时,它工作正常。任何想法有什么问题?
我目前正在使用/测试NGINX反向代理设置中的微缓存功能,以获取动态内容。
发生的一个大问题是需要忽略的会话/ Cookie,否则人们将使用该站点上的随机帐户进行登录。
目前,我忽略了这样的流行CMS Cookie:
if ($http_cookie ~* "(joomla_[a-zA-Z0-9_]+|userID|wordpress_(?!test_)[a-zA-Z0-9_]+|wp-postpass|wordpress_logged_in_[a-zA-Z0-9]+|comment_author_[a-zA-Z0-9_]+|woocommerce_cart_hash|woocommerce_items_in_cart|wp_woocommerce_session_[a-zA-Z0-9]+|sid_customer_|sid_admin_|PrestaShop-[a-zA-Z0-9]+")
{
# set ignore variable to 1
# later used in:
# proxy_no_cache $IGNORE_VARIABLE;
# proxy_cache_bypass $IGNORE_VARIABLE;
# makes sense ?
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我想向忽略列表添加更多的cookie,这将成为一个问题。更不用说根据文档,不建议在NGINX中使用太多“ if”语句。
我的问题是,是否可以使用map方法完成此操作?我看到map中的正则表达式是不同的(或者我错了)。
还是有另一种方法可以有效地忽略/绕过cookie?
我在stackoverflow上进行了大量搜索,尽管有很多不同的示例。我找不到适合自己需要的东西。
谢谢
更新:
在互联网上进行了大量的阅读和“挖掘”(我们不妨只说Google),我发现了很多有趣的例子。
但是,我对这些感到非常困惑,因为我不完全了解正则表达式的用法,而且我害怕在不了解正则表达式的情况下实现这种用法。
范例1:
map $http_cookie $cache_uid {
default nil;
~SESS[[:alnum:]]+=(?<session_id>[[:alnum:]]+) $session_id;
}
Run Code Online (Sandbox Code Playgroud)
在这个示例中,我注意到正则表达式与“ if”块中使用的正则表达式有很大不同。我不明白为什么模式开始时没有任何“”并且直接带有〜符号。
我不明白[[:alnum:]] +是什么意思?我搜索此文件,但是找不到文档。(或者我错过了)
我可以看到作者将默认设置为“ nil”,这不适用于我的情况。
范例2:
map $http_cookie $cache_uid {
default '';
~SESS[[:alnum:]]+=(?<session_id>[[:graph:]]+) $session_id;
} …Run Code Online (Sandbox Code Playgroud) 语境:
我在 Nginx 后面部署了 NextJS。这个想法是使用 NextJS 创建多个托管在不同域中的网站。每个域在 Nginx 中都有一个条目,它将指向pages/cafes/[cafeId]NextJS 中的特定路径。所有网站都只有一个 NextJs 部署,每个域都将使用staticnginx 中的代理进行路由。
配置文件
server {
listen 80;
server_name www.cafe-one.local;
location = / {
proxy_pass http://localhost:3000/cafes/cafe_id_1;
...
}
location / {
proxy_pass http://localhost:3000/;
...
}
}
server {
listen 80;
server_name www.cafe-two.local;
location = / {
proxy_pass http://localhost:3000/cafes/cafe_id_2;
...
}
location / {
proxy_pass http://localhost:3000/;
...
}
}
Run Code Online (Sandbox Code Playgroud)
页面/[cafeId]/index.js
export const getStaticPaths = async () => {
return {
paths: [], // no website rendered during …Run Code Online (Sandbox Code Playgroud) 我是NGINX的新手,正在迁移服务器。我还没有完成新服务器上的所有操作,因此我希望它与新服务器匹配,除非该资源或路径不存在。如果是这样,我想将其发送到旧服务器。有办法吗?