Articles of nginx

Nginx反向代理IP问题

出于某种原因,Apache仍然看到我的SERVERS IP。 这是一个nginx问题吗? /etc/nginx.conf user nobody; # no need for more workers in the proxy mode worker_processes 4; error_log /var/log/nginx/error.log info; worker_rlimit_nofile 20480; events { worker_connections 5120; # increase for busier servers use epoll; # you should use epoll here for Linux kernels 2.6.x } http { server_name_in_redirect off; server_names_hash_max_size 10240; server_names_hash_bucket_size 1024; include mime.types; […]

带有单独别名的Nginx反向代理

有趣的问题我有这个Python代码: import sys, bottle, gevent from bottle import * from gevent import * from gevent.wsgi import WSGIServer @route("/") def index(): yield "/" application=bottle.default_app() WSGIServer(('', port), application, spawn=None).serve_forever() 与nignx单独运行,作为反向代理。 现在,每个代码片段都是独立运行的,但是我为每个项目(目录)运行了多个这样的域,但是代码认为它是最高级别的,当它转到mydomain.com/something工作时,代码并不是这样。如果你去mydomain.com/something/你会得到一个错误。 不,我已经testing,并发现nginx正在剥离请求/查询中的“东西”,所以当你去mydomain.com/something/代码认为你要去mydomain.com //我怎么得到nginx停止删除这些信息? Nginx网站代码: upstream mydomain { server 127.0.0.1:10100 max_fails=5 fail_timeout=10s; } upstream subdirectory { server 127.0.0.1:10199 max_fails=5 fail_timeout=10s; } server { listen 80; server_name mydomain.com; access_log […]

将主机重写到其他主机有一些复杂性

我在domiy.com上有一个网站,现在我将名称更改为namedar.com。 我想301redirectdomiy.com(或nametyper.com)的所有请求,以便他们返回具有请求URI完整的namedar.com。 我已经尝试将所有内容redirect到namedar.com,但是当请求到达named.com时会导致redirect循环。 rewrite ^ $scheme://nametyper.com$request_uri permanent; # Doesn't work 我还想保持这样的configuration,使得所有'www'请求都被redirect到非www版本。 我的nginx.conf看起来像这样: server { server_name namedar.com www.namedar.com domiy.com www.domiy.com nametyper.com www.nametyper.com; # Remove all 'www.' prefixes. if ($host ~* www\.(.*)) { set $host_without_www $1; rewrite ^(.*)$ $scheme://$host_without_www$1 permanent; } } 我如何写一个rewrite指令来完成这个?

如何重写URL去除Nginx中的.php?

寻找重写我的url,这样页面不会以/.php结尾。 例如,我想使'/about.php'看起来像'/ about'或'/ about /' 任何人都可以共享模块来做到这一点? 如果你有一个nginx.conf或者virtual.conf文件的例子来显示这种types的重写,我将不胜感激。 显然,我是一个小白,但试图通过实例学习。

模仿mod_proxy在Apache中的nginx代理configuration,如何?

我有一个在nginx中的工作configuration,就是这样 server { listen 80; server_name example.com; location / { proxy_pass http://127.0.0.1:8000; proxy_redirect default; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 100m; client_body_buffer_size 128k; proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|htm|html)$ { root PATH_TO_STATIC_CONTENT; } } 我怎样才能模仿这与Apache? 我尝试了下面的configuration,但静态内容不起作用。 <VirtualHost *:80> […]

nginx透明反向代理 – 403,404和更多

我在专用的服务器上运行Debian Squeeze,将其用作Web和数据库服务器(nginx,apache和mysql)。 我跟着几个关于如何设置nginx作为apache的反向代理的教程 – 大部分工作正常,我不得不说 – 哇,nginx是非常快的。 但是,他们也是我在“testing”期间遇到的一些问题。 在这里,我希望serverfault能够帮助我的人。 🙂 所以让我先给你看我完整的configuration和解释场景。 脚本 要pipe理服务器上的客户端,我正在使用ISPConfig控制面板,configuration为处理Apache(您可以selectNginx或Apache之间)。 因为我不希望客户端必须configuration特殊的重写规则等我试图调整nginx非常透明,这意味着它确实只提供静态文件和所有其他请求传递给Apache,所以重写规则等仍然工作。 组态 我目前拥有的是: 一个正常的Apache安装,监听端口82 mod_rpaf启用转发真正的IP到Apache nginx使用以下configuration安装: /etc/nginx/nginx.conf user www-data; worker_processes 4; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 2048; } http { include /etc/nginx/mime.types; access_log /var/log/nginx/access.log; sendfile on; tcp_nopush on; keepalive_timeout 4; tcp_nodelay on; # Hide version information server_tokens off; # Include […]

Nginx重写规则,有些工作,有些则不行

这是两个重写规则: 这个工作 rewrite ^/knowledgebase/([0-9]+)/[a-z0-9_-]+.html$ /./knowledgebase.php?action=displayarticle&id=$1 last; 这一个不 rewrite ^/announcements/([0-9]+)/[a-z0-9_-]+.html$ /./announcements.php?id=$1 last; 就我所知,两者没有区别。 公告要重写的url是: /announcements/2/New-Site-Design.html 而且应该改写成: /announcements.php?id=2 与知识库相比,我实在看不出公告是如何工作的。 任何提示将非常感谢。 ===添加configuration文件 – 我的域名 #HTTP server { listen 80; server_name portal2.website.co.uk website.co.uk www.website.co.uk; access_log /var/log/nginx/website.access_log; error_log /var/log/nginx/website.error_log; root /var/www/website.co.uk/www; index index.php index.htm index.html; location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/website.co.uk/www$fastcgi_script_name; include fastcgi_params; } rewrite […]

phpMyAdmin在Nginx上使用SSL(HTTPS和MySQL客户端)

我正在通过SSL(HTTPS)设置phpMyAdmin,还要连接数据库服务器。 我已经使用SSL证书configuration了Nginx。 我已经注意到phpMyAdmin的版本检查,因为它是通过HTTP连接和打破安全连接。 所有数据库服务器都启用SSL: Variable_name Value have_openssl YES have_ssl YES ssl_ca /etc/mysql/ca-cert.pem ssl_capath ssl_cert /etc/mysql/server-cert.pem ssl_cipher ssl_key /etc/mysql/server-key.pem 我已经添加了指令$cfg['Servers'][$i]['ssl'] = TRUE; 到phpMyAdmin的configuration文件,但我没有指定pathcerts /键,值: $cfg['Servers'][$i]['ca'] = '/etc/ssl/certs/ca-cert.pem'; $cfg['Servers'][$i]['cert'] = '/etc/mysql/client-cert.pem'; $cfg['Servers'][$i]['key'] = '/etc/mysql/client-key.pem'; 但是,它看起来像我在Web服务器和数据库服务器之间使用SSL连接: 问题: 你能帮我理解这是如何工作没有在networking服务器上的证书,如果我实际上使用encryption连接到数据库服务器? 是否有可能将它caching在某处,因为我已经启用了这些指令了一会儿? 我也注意到奇怪的行为: 当我login到PMA时,我看到以下URL: https://example.com/index.php?token=e683bf8b717275f509cc76716c8db605#PMAURL:server=1&target=main.php&token=e683bf8b717275f509cc76716c8db605 当我删除长string,并通过按Enter访问FQDN(example.com)时,服务器注销我,但是当我添加一些随机string(example.com/sdfsfefse) – input,我login没有指定密码。 这与Cookie有关吗? 谢谢

如何获得nginx gzip所有文件并添加expires标题

最近进入VPS系统并安装它们,等等等等。所以,我有一对夫妇工作的网站,其中一个我试图真正优化它的速度。 使用雅虎的ySlow作为指导,我仍然没有gzip和标题过期部分。 我的nginx.conf位于/etc/nginx/nginx.conf,这里是它的细节: 请帮忙! 我不知道为什么它不工作。 ####################################################################### # # This is the main Nginx configuration file. # # More information about the configuration options is available on # * the English wiki – http://wiki.codemongers.com/Main # * the Russian documentation – http://sysoev.ru/nginx/ # ####################################################################### #———————————————————————- # Main Module – directives that cover basic functionality # # http://wiki.codemongers.com/NginxMainModule […]

Centos正在使用所有的内存caching,而不是放弃

total used free shared buffers cached Mem: 1024 1020 3 0 0 859 -/+ buffers/cache: 160 863 随着863“免费”的程序,一切都得到了内存的问题。 所有的网页都有 Warning: Unknown: Unable to allocate memory for pool. in Unknown on line 0 我怎样才能知道在地狱里吃了859mb的内存,并释放它? 我用php-fpm和mysql使用nginx。