我计划在nginx后面有多个运行FastCGI的ASP.NET应用程序。 这些多个应用程序的二进制文件不同,我希望nginx根据它们的URI将请求转发到相应的ASP.NET应用程序。 单声道应用程序本身始终在根path"/"上进行侦听。 我假设我将不得不修改位置指令和fastcgi_params,但我不知道哪些fastcgi_params我必须改变,以使其工作。 示例用例: 应该将http://www.server.com/api/1/status转发到在TCP端口9000上运行的FastCGI应用程序,请求URI应该被重写为/status 。 http://www.server.com/api/2/status应该被转发到运行在TCP端口9001上的FastCGI应用程序,请求URI也应该被重写为/status以匹配ASP.NET侦听器configuration。 转发到FastCGI时,URI的/ api / {version}部分应该被删除。 我尝试了这个nginxconfiguration,ASP.NET通过FastCGI调用,但是无法处理请求: location ~ /api/1/(.*) { root /usr/aspnet/; fastcgi_pass 127.0.0.1:9000; include /etc/nginx/nginx-fastcgi-params.conf; fastcgi_param REQUEST_URI /$1; } 我不知道是否我的方法与位置指令是完全正确的,有什么想法? /编辑:这是我想出的解决scheme。 显然不需要其他的fastcgi_params: location ~ ^/api/1/(.*)$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param SCRIPT_NAME /$1; }
我一直在使用nginx&fastcgi-mono-server4(在Ubuntu 11 natty上)进行实验,并得到了下面的asp.net运行时错误: 说明:HTTP 500.error handling请求。 System.SystemException:运行dmcs时出错:找不到指定的文件 我打算把这个问题发布到stackoverflow,但通过打字(实际上正确地阅读信息!)的一半,我想出了如何解决这个问题。 见答案。
我有一台机器上的端口8080上运行的ASP.NET服务器,并出于性能的原因在端口80上运行的nginxcaching反向代理。请求完成到端口80,然后,如果没有由nginxcaching应答,则传递到本地主机:8080通过nginx proxy_pass指令。 到目前为止,这个设置工作正常,除了ASP.NET的customErrors。 我希望他们是“RemoteOnly”,但由于反向代理所有请求将源自本地,因此是本地的。 我通过nginx传递了X-Real-IP和X-Forwarded-For,但ASP.NET似乎完全忽略了这一点。 任何想法?
我很困惑,因为我还没有看到有关如何使用HA和多主机部署托pipeASP.NET核心/ .NET核心应用程序的任何博客或说明。 所有示例都是: 1) One NGINX reverse-proxy, one Kestrel 2) One IIS reverse-proxy, one Kestrel 并在同一主机上的两个组件。 在现实生产环境中,您可能有服务发现,多个前端,多个后端等。但是对于这种情况,没有任何说明。 所以我的问题将是多主机环境: 我是否将一个IIS / NGINX部署为LB /反向代理,并将请求redirect到在多个单独的VM上运行的Kestrels,即各种不同的IP:s? 或者我运行NGINX / F5在一台主机上进行负载均衡,然后将httpstream量路由到运行IIS + Kestrel的各种虚拟机:或者只是Kestrel? 在这个设置中需要IIS,因为NGINX充当LB? 如果我将IIS或NGINX作为反向代理运行,它们是否可以在不同的虚拟机上保持活跃状态?还是每个Kestrel都需要一个IIS / NGINX来保持活动? 即Kestrel进程必须与反向代理位于同一主机上? 所有的答案都非常受欢迎,并提前感谢! 🙂
关于如何使用xsp服务器进行本地开发debugging的信息很多,只是来自官方mono网站的一个例子 : 我想在我的堆栈跟踪行号 默认情况下,xsp和xsp2以“释放”模式运行,这意味着在运行时不会生成debugging信息。 如果你想在你的堆栈跟踪中使用行号,你必须将–debug选项传递给Mono,这是通过调用xsp或xsp2和MONO_OPTIONS环境variables来完成的,如下所示: $ MONO_OPTIONS=–debug xsp Listening on port: 8080 (non-secure) Listening on address: 0.0.0.0 Root directory: /tmp/us Hit Return to stop the server. 如果您使用Apache运行mod_mono,则必须在configuration文件中使用MonoDebug指令,如下所示: MonoDebug true 在nginx上可能吗?
我已经在Linux服务器上安装了单声道平台,并且能够在nginx HTTP服务器之后运行它。 该系统运行良好,完美地服务于.NET特定的dynamic文件。 但是,我只想传递所需的文件(扩展名)为mono,并让nginx处理所有其他文件,包括静态文件和在.NET平台上不应该正常工作的文件。 我已经configuration了我的nginx,如下所示,但是 – 因为我对.NET平台没有足够的了解 – 我不确定哪些扩展必须传递给mono,哪些必须被禁止。 这里是我的nginxconfiguration文件的相关部分: # Do not pass .NET forbidden extensions to anywhere. # Theese are the extensions that should not be served to the clients location ~ \.(config|dbml|dll|master|other|forbidden|exts)$ { deny all; } 这里是configuration的一部分,将所需的(只有)文件传递给单声道: # Theese are the extensions which *must* be handled by mono location ~ \.(aspx|cs|other|exts|that|must|be|handled|by|mono)$ { […]
在我的本地机器上运行ASP.NET vNext项目后 ,我试图弄清楚如何在nginx上运行它,因为它看起来是一个推荐的select 在jsinh的 博客 ,我安装它使用: sudo apt-get update sudo apt-get install nginx -y 我试图通过使用以下内容来了解它是否工作: ifconfig eth0 | grep inet | awk '{ print $2}' 运行后 sudo service nginx start sudo service nginx stop 但是,输出总是一样的: 如何validationnginx是否在运行?
我有多个ASP.NET应用程序在单个IIS服务器上运行,每个应用程序具有不同的端口。 我在同一台服务器上安装了nginx,以便我的客户端只能使用端口80访问我的所有应用程序。 Nginx运行在80端口上。我个人的ASP.NET应用程序也正常运行。 我在nginx的conf文件中做了这些修改 location /students/ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://127.0.0.1:84; } location /registration/ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://127.0.0.1:82; } 然后我重新启动了nginx并在浏览器中input了url http://127.0.0.1/students/ 。 Nginx提供了404页面。 我没有做任何其他更改的conf文件。 我做错了什么?
我有一个项目需要使用ASP.NET来完成。 目前,我正在使用一个Linux的盒子,并没有访问Windows,所以我想知道在Mono.Net同时进行开发。 最后的项目需要在Microsoft.NET上完成。 将Mono.NET应用程序移植到Microsoft.NET有多简单? 或者我应该等待,直到我得到Windows机器? 我不介意偶尔遇到的挑战,但如果这将是一个很大的痛苦。
我使用.net核心创build了一个Web应用程序。 我已经成功地运行在Windows和Mac上。 不过,我在Linux上的所有静态文件都得到了404。 我正在使用Ubuntu 16.04和我的startup.cs是这样的。 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory,IApplicationLifetime appLifetime) { loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); app.UseMvc(); app.UseDefaultFiles(); app.UseStaticFiles(); appLifetime.ApplicationStopped.Register(() => this.ApplicationContainer.Dispose()); } 任何想法如何让它在Linux上运行?