我使用Nginx和GeoIP来阻止某些国家(到整个网站)。 是否可以阻止一个特定的目录? 这条路: www.domain.com/ 人人都可以访问 www.domain.com/ ES 只有西class牙的IP可以访问,没有其他人。 www.domain.com/ 其他 除中国外, 每个人都可以使用OTHER (国家只是作为一个例子) 谢谢。 是的,我知道GeoIP并不总是准确的,但是帮助很大。
我一直在努力与NGINXconfiguration。 我已经build立了一个支持search引擎友好(SEF)URL的configuration的开发环境(本地笔记本电脑),但是相同的configuration在我的testing服务器上似乎不起作用。 本地configuration: server { server_name example; root /home/arciitek/git/example/public; client_max_body_size 500M; location /collection/ { try_files $uri $uri/ /collection/index.php$args; index index.php; } location / { index index.html index.htm index.php; try_files $uri $uri/ /index.php?q=$uri&$args; } location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/arciitek/git/example/public/$fastcgi_script_name; } } 这工作正常。 现在在testing环境中看起来像这样: server { server_name dev.example.com; access_log […]
这是基于官方Symfony2文档的网站configuration server { listen 80; server_name project.local; root /media/Storage/project/web; location / { # try to serve file directly, fallback to app.php try_files $uri /app.php$is_args$args; } location ~ ^/(app|app_dev|config)\.php(/|$) { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param HTTPS off; } error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; } server { listen 443; server_name project.local; root /media/Storage/project/web; […]
我在这个目录树中build立了一个PHP项目: 项目 V1 应用程序(项目文件) 上市 index.php(控制器的应用程序) 文件 PHP文件 例子 PHP文件 “项目”是networking服务器的根源。 我想跳过url的“公开”部分,但保留“v1”: http://myserver.com/v1/whatever/1 并不是 http://myserver.com/v1/public/whatever/1 我得到了这个工作: rewrite ^(.*)$ /v1/public/index.php?_url=/$1; 另外我希望能够通过这个URL结构来处理“documentation”和“examples”中的文件 : http://myserver.com/v1/documentation/file_name.php http://myserver.com/v1/examples/file_name.php 我使用这两个.htaccess文件在Apache中工作: #/项目/ V1 /的.htaccess 重写引擎 RewriteRule ^ $ public / [L] RewriteRule(。*)public / $ 1 [L] #/项目/ V1 /公/的.htaccess RewriteEngine On RewriteCond%{REQUEST_FILENAME}!-d RewriteCond%{REQUEST_FILENAME}!-f RewriteRule ^(。*)$ index.php?_url = / $ 1 [QSA,L] 我尝试将这些设置转换为Nginx失败。 […]
我试图使用nginx作为两个weblogic服务器的代理服务器。 weblogic上的端口是23823和23824,我希望它们都可以从端口8888访问,并通过上下文path进行区分。 我试过这个configuration: listen 8888; server_name vead03; location /app1 { proxy_pass http://127.0.0.1:23823; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /app2 { proxy_pass http://127.0.0.1:23824; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } 我可以通过端口8888访问这两个服务器没有问题,但是当一个请求登陆服务器,我打电话给request.getServerPort() ,我收到80由于某种原因。 我不知道这个消息从哪里来。 80端口不在nginxconfiguration中,我绝对没有在Weblogic的任何地方使用它。 这是一个相当大的问题,因为应用程序预计会收到8888 ,而不是80。
我正在尝试将auth_request模块与more_set_input_headers结合使用, 以便将我的用户自动login到Web应用程序中。 基本上,它是这样工作的: 用户有一些会话cookie来validation它们。 我有一个validationcookie的PHP脚本(auth.php),并返回他们正确的用户名作为响应头。 Nginx使用auth_request调用auth.php,并将用户名设置为一个variables。 Nginx然后调用Web应用程序,请求标头设置为正确的用户名。 networking应用程序读取标题,并将用户login。 这工作,但奇怪的不一致。 问题是,当用户访问/ app /上的web应用程序时,它可以工作,但是当应用程序在/app/index.php上访问时,它永远不会收到来自nginx的标题。 我创build了一个模拟configuration,重现错误。 Nginx的网站configuration: server { server_name www.example.com index index.php index.html; # — Internal auth location /auth { internal; root /var/www/sf; location /auth/auth.php { fastcgi_pass unix:/var/run/php5-fpm.sock; include includes/fastcgi_params; fastcgi_pass_request_body off; fastcgi_param CONTENT_LENGTH 0; } location /auth { deny all; } } location / { auth_request […]
我使用了CNAME通配符DNS条目,如: @ IN A ip.add.re.ss www IN CNAME @ * IN CNAME @ 我的根domain.com和sub1.domain.com是可访问的(在同一个digitalocean飞沫)。 但是,如果我尝试访问sub2.domain.com,在Web服务器configuration后,它将我带到sub1.domain.com。 我正在使用Nginx服务器块,并且所有域都使用相同的IP地址。 (我已经在80上configuration了domain.com,而我访问/configurationsub1.domain.com:8088和sub2.domain.com:8088) sub1是phpmyadmin: server { listen 8088; server_name phpmyadmin.mydomain.com; root /usr/share/nginx/html/phpmyadmin; index index.php index.html index.htm; access_log /var/log/nginx/phpmyadmin/access.log; error_log /var/log/nginx/phpmyadmin/error.log; if (!-e $request_filename) { rewrite ^/(.+)$ /index.php?url=$1 last; break; } # Images and static content is treated different location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ […]
是否可以将Nginx的PageSpeed模块与SSI一起使用? 启用PageSpeed后无法启动并运行SSI。 但是,只要我禁用PageSpeed,SSI再次工作: location ~ .+\.html$ { pagespeed off; ssi on; }
我有这样的redirect规则设置 #redirect old phpbb links to xenforo links if ( $arg_p ) { rewrite ^\/forum\/viewtopic\.php /forum/posts/$arg_p/? permanent; } 它将发送一个301到任何匹配该正则expression式到新格式的url。 不过,我想知道是否有办法做到这一点redirect只有当目标url是有效的(在这种情况下,有效的手段,它不应该返回404或403)
我似乎只有在商业nginx版本中支持proxy_cache_purge指令。 有没有其他的方法可以从caching中获取文件/path/密钥? 在具有启用caching的示例proxy_passconfiguration下面: … # Configure proxy cache proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=demo:10m; proxy_pass http://127.0.0.1:90$uri; 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_cache demo; # proxy_cache off; proxy_cache_key $host$uri$is_args$args; proxy_cache_valid any 1m; …